void putimg();//加载图片
void init();//数组赋值
void draw();//绘图部分
int playgame();//获取鼠标点击
void play();//处理两次点击
无效洛();
//空白
//==========================================
//函数定义部分
无效 putimg()
{//图形库中的函数
initgraph(640, 480);//创建一个窗口
loadimage(&img[0], “1.jpg”, 80, 80);//加载图片
loadimage(&img[1], “2.jpg”, 80, 80); //L 多字节字符集
loadimage(&img[2], “3.jpg”, 80, 80);
loadimage(&img[3], “4.jpg”, 80, 80);
loadimage(&img[4], “5.jpg”, 80, 80);
loadimage(&img[5], “6.jpg”, 80, 80);
loadimage(&img[6], “7.jpg”, 80, 80);
loadimage(&img[7], “8.jpg”, 80, 80);
loadimage(&img[8], “background.jpg”, 640, 480);//窗口大小一样
}
无效初始化()
{
//1.map 分配每张图片在哪里放哪张图片
//map成对随机分配,保证每个都有
//先使用arr数组处理map
int arr[8 * 6] = { 0,0,0,0,0,0,
1,1,1,1,1,1,
2,2,2,2,2,2,
3,3,3,3,3,3,
4,4,4,4,4,4,
5,5,5,5,5,5,
6,6,6,6,6,6,
7,7,7,7,7,7 };//初始映射
// shuffle arr之后,放到这个map数组中
//随机数
srand((unsigned)time(NULL));//生成随机数随机数种子 time.h
int length = 48;//arr 长度
国际温度;
//分配地图
对于 (int i = 0; 我
{
对于 (int j = 0; j
{
//随机取其中一个arr赋值给map[i][j]
temp = rand() % 长度;
map[i][j] = arr[temp];//提取出来的数字不能再使用了
//取出的号码放在后面
for (int k = temp; k
{
arr[k] = arr[k + 1];//k+1
}
lenth–;//数组的有效长度减一
}
}
win = 48;//记录当前图片数量
//根据贴图纹理打乱贴图
}
无效绘制()
{
开始批量绘制();
//背景——粘贴背景
putimage(0, 0, &img[8]);
//粘贴另一个图像
对于 (int i = 0; 我
{
对于 (int j = 0; j
{
//循环遍历数组
开关(地图[i][j])
{
case 0://粘贴第一张图片
putimage(80 * i, 80 * j, &img[0]); 休息;
案例一:putimage(80 * i, 80 * j, &img[1]); 休息;
案例2:putimage(80 * i, 80 * j, &img[2]); 休息;
案例3:putimage(80 * i, 80 * j, &img[3]); 休息;
案例4:putimage(80 * i, 80 * j, &img[4]); 休息;
案例5:putimage(80 * i, 80 * j, &img[5]); 休息;
案例6:putimage(80 * i, 80 * j, &img[6]); 休息;
案例 7:putimage(80 * i, 80 * j, &img[7]); 休息;
}
}
}
EndBatchDraw();
}
诠释游戏()
{
//图形库函数
//1.鼠标信息
MOUSEMSG msg;//存储鼠标信息
msg = GetMouseMsg();//获取鼠标信息
//根据鼠标位置鼠标信息
开关 (msg.uMsg)
{
案例 WM_LBUTTONDOWN:
//msg.x msg.y 第一张图片 0
//返回坐标值 map[msg.x / 80][msg.y / 80];
//86–>地图[8][6]
返回 msg.x / 80 * 10 + msg.y / 80;
//返回msg.x/8+msg.y/80;
//int 除法不保留小数 3/4 0 3/4*4=0
休息;
}
return -1;//没有得到值
}
无效播放()
{
//获取两次鼠标点击 1. 两次鼠标点击都有效
int point1, point2;//获得两次鼠标点击
while ((point1 = playgame()) == -1 || map[point1 / 10][point1 % 10] == -1);//获取坐标
//outtextxy(point1 / 10 * 80, point1 % 10 * 80, “get”);
设置线颜色(红色);
矩形(point1 / 10 * 80, point1 % 10 * 80, point1 / 10 * 80 + 80, point1 % 10 * 80 + 80);
// 根据坐标判断
//1.有没有拿到内容 point1 = playgame() != -1
//2.是不是已经赋值的内容 map[point1 / 10][point1 % 10] != -1
//删除的部分 = -1
而 ((point2 = playgame()) == -1 || 地图[point2 / 10][point2 % 10] == -1);
// 只加一个
//可否淘汰
//可以消除1.坐标不同2.图片相同
if (point1 != point2 && map[point1 / 10][point1 % 10] == map[point2 / 10][point2 % 10])
{
//连接部分
line(point1 / 10*80+30,point1 % 10*80+30,point2 / 10*80+30,point2 % 10*80+30);//连接两个坐标
睡眠(500);//500ms
map[point1 / 10][point1 % 10] = -1;//图片和数组钩子-1没有对应的图片绘制
地图[point2 / 10][point2 % 10] = -1;
win -= 2;//消除部分
}
别的
{
// 未删除
}
}
无效洛()
{
//别名歌曲
mciSendString(“打开 1.mp3”, 0, 0, 0);
mciSendString(“播放 1.mp3”, 0, 0, 0);
setbkmode(TRANSPARENT);//设置文字背景透明
settextcolor(LIGHTGRAY);//设置文字颜色
settextstyle(30, 0, “粗体”);
char 诗[2][9] = { “沉默的爱”, “沉默的欢乐” };
//一个中文占2个字节,8个字节考虑字符串\0
//黄鹂和青柳,你还没有男朋友
/*outtextxy(0, 0, 诗[0]);
outtextxy(0, 30, 诗[1]);*/
//文字一个一个循环出现,每次输出一个中文
//1.中文占两个字节,不能在char\0三个字节中存储字符串
char word[3];//保存一个中文单词
对于 (int i = 0; 我
{
对于 (int j = 0; j
{
词[0] = 诗[i][j];
词[1] = 诗[i][j + 1];
字[2] = ‘\0’;
outtextxy(15*j+100,30*i,word);
睡眠(200);
if (poem[i][j + 2] == ‘\0’) 中断;
}
}
//弹出内容
HWND hwnd = GetHWnd();//获取当前窗口句柄
MessageBox(hwnd, “我爱你”, “NAME”, MB_OK);
MessageBox(hwnd, “夏奇”, “制片人”, MB_OK);
}
//=========================
主函数()
{
putimg();
在里面();
画();
while (win!=0)//循环部分
{
玩();
draw();// 纹理
}
//告白部分
//一首最喜欢的人写的一句话
// 一个段落
/*initgraph(640, 480);
loadimage(NULL, “background.jpg”, 640, 480);*/
低();
获取字符();
返回0;
}
最终效果图,小编会贴出来的。如果只是材料,有时您可以自己找到它。需要小编的素材图片可以加我的群466572167,群里也有素材可以下载学习,可以交流讨论
加群466572167,可以交流学习
加群466572167交流学习
对于编译工具,小编会给个建议:开发工具VS 2013 2015(Vs2017不能)VC可以
但是DEV C /GCC /CODEBLOCK不能c语音游戏程序,vs2017之所以不能,是因为图形库还不支持。
额外需要的东西是1.图形库easyx graphics.h需要安装2.素材9张图片
涉及的知识点:
图形库的一些功能(注释)
1.数组
2.if for 分支循环
3.函数
4.随机数
编辑会讲一会。需要素材的可以加编辑群466572167,群里自然也有资料下载,大家可以交流改进。今天临时写个小项目,注意了,小编也写出来了c语音游戏程序,如果素材自然,图片自己找,不一定要和什么一模一样编辑写道。涉及的知识点不多,只是C语言的基础知识,主要是因为编程是思维逻辑,这点很重要。
请登录后发表评论
注册
社交帐号登录