前言:
眼前同学们对“js打乱顺序”都比较关切,咱们都需要知道一些“js打乱顺序”的相关资讯。那么小编也在网摘上搜集了一些有关“js打乱顺序””的相关文章,希望看官们能喜欢,大家快快来学习一下吧!这篇文章主要为大家详细介绍了C语言实现——《拼图游戏项目》,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下!
游戏介绍:
对刚开始接触拼图的玩家而言,所谓入门级的拼图主要是取决于图案的一些特征。那些图案内容比较丰富的,也就是说,在整幅画面的各个角落里也有内容相对完整的子画面的,且色彩和轮廓反差较大的,这样的拼图玩起来就相对容易一些。因为在拼组的局部,想要寻找合适的零片,可选的零片总能被限制在比较小的范围内
项目技术:
1.二维数组
2.可视化编程
2.1 动态制作
3.切割技术
3.1 实现图片的自动切割
4.鼠标操作
4.1 玩游戏的内容
对逻辑也是有一定的要求,但是这些在我们项目源码里面都会有注释,大家到时候学习的时候千万不要忽略注释,注释可以更好地帮你理解代码,尤其是C语言初学者。
本项目编译环境:VS2019/VS2013;
插件:图形库插件easyX,涉及图片素材可以自行百度找也可以关注文末领取;
效果图展示
配套讲解教程:游戏教程——哔哩哔哩
源代码示例:
#include <graphics.h>#include <stdio.h>#include <time.h>#include <conio.h>/******************************************/// 全局变量的定义IMAGE img, blank; //美女和空的int array2D[4][4];int array1D[15] = { 0 };struct pos{ int i; int j;}mypos = {0,0};struct pos searchPos(int array2D[][4], int i,int j){ for (i = 0; i <= 3; i++) { for (j = 0; j <= 3; j++) { if (array2D[i][j] == 15) { mypos.i = i; mypos.j = j; return mypos; } } } return mypos;}/******************************************/// 绘制开始菜单void drawMenu(){ initgraph(640, 450); setbkcolor(WHITE); //设置窗口颜色为白色 cleardevice(); //刷新显示 setfillcolor(LIGHTBLUE); //设置填充颜色为淡蓝色 settextstyle(30, 0, "字魂24号-镇魂手书"); setbkmode(TRANSPARENT); //透明方式去掉文字背景 //画矩形 fillrectangle(240, 100, 380, 150); fillrectangle(240, 100+60, 380, 150 + 60); //文字输出 outtextxy(240 + 20, 100 + 13, "开始游戏"); outtextxy(240 + 20, 100 + 13 + 60, "退出游戏"); settextcolor(RED); //设置文字颜色为红色 outtextxy(130, 280, "顿开教育莫影拼图游戏 v1.0版本"); MOUSEMSG m; //鼠标操作 while (1) { m = GetMouseMsg(); //当鼠标放到矩形区域,画一个矩形 if (m.x >= 240 && m.x <= 380 && m.y >= 100 && m.y <= 150) { setlinecolor(RED); rectangle(240 - 5, 100 - 5, 380 + 5, 150 + 5); if (m.uMsg == WM_LBUTTONDOWN) { break; } } else if (m.x >= 240 && m.x <= 380 && m.y >= 160 && m.y <= 210) { setlinecolor(RED); rectangle(240 - 5, 160 - 5, 380 + 5, 210 + 5); if (m.uMsg == WM_LBUTTONDOWN) { exit(0); } } else { setlinecolor(WHITE); rectangle(240 - 5, 100 - 5, 380 + 5, 150 + 5); rectangle(240 - 5, 160 - 5, 380 + 5, 210 + 5); } } closegraph();}/******************************************/// 加载资源void loadResource(){ srand((unsigned int)time(NULL)); int length = 15; int pos = 0; int i, j; //1.给一维数组初始化0-15 for (i = 0; i < 15; i++) { //0-14 array1D[i] = i; } //2.随机出来一个下表 for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { //单独处理最后一个位置 if (i == 3 && j == 3) { array2D[3][3] = 15; break; } pos = rand() % length; array2D[i][j] = array1D[pos]; for (int k = pos; k < length; k++) { array1D[k] = array1D[k + 1]; } length--; } if (i == 3 && j == 3) { array2D[3][3] = 15; break; } } //缩放加载 loadimage(&img, "Love.jpg", 800, 800); loadimage(&blank, "blank.jpg", 200, 200);}/******************************************/// 绘图过程void drawMap(){ //根据打乱顺序的二维数组中的值去拿照片中相应的位置 for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { int x = j * 200; int y = i * 200; switch (array2D[i][j]) { case 0: case 1: case 2: case 3: putimage(x, y, 200, 200, &img, array2D[i][j] * 200, 0); break; case 4: case 5: case 6: case 7: putimage(x, y, 200, 200, &img, (array2D[i][j]-4) * 200, 200); break; case 8: case 9: case 10: case 11: putimage(x, y, 200, 200, &img, (array2D[i][j] - 8) * 200, 400); break; case 12: case 13: case 14: putimage(x, y, 200, 200, &img, (array2D[i][j] - 12) * 200, 600); break; case 15: putimage(x, y, &blank); break; } } }}/******************************************/// 游戏过程void playGame(){ MOUSEMSG m; //白块在数组那个位置 int j_Mouse, i_Mouse; //鼠标点在数组那个位置 while (1) { drawMap(); //第一次显示 //换之前定位 白块在哪里 int i=0, j=0; searchPos(array2D, 3, 3); i = mypos.i; j = mypos.j; m = GetMouseMsg(); switch (m.uMsg) { case WM_LBUTTONDOWN: j_Mouse = m.x / 200; i_Mouse = m.y / 200; if (i >= 0 && j < 4&&i<4&&j>=0) { if (i_Mouse == i + 1&&i+1<=3 && j_Mouse == j) { array2D[i][j] = array2D[i_Mouse][j_Mouse]; array2D[i_Mouse][j_Mouse] = 15; break; } if (i_Mouse == i - 1 && i - 1 >=0 && j_Mouse == j) { array2D[i][j] = array2D[i_Mouse][j_Mouse]; array2D[i_Mouse][j_Mouse] = 15; break; } if (i_Mouse == i && j_Mouse == j - 1&&j-1>=0) { array2D[i][j] = array2D[i_Mouse][j_Mouse]; array2D[i_Mouse][j_Mouse] = 15; break; } if (i_Mouse == i && j_Mouse == j + 1&&j+1<=3) { array2D[i][j] = array2D[i_Mouse][j_Mouse]; array2D[i_Mouse][j_Mouse] = 15; break; } } break; } }}/******************************************/// 游戏过程void GameOve(){ int flag = 1;}int main(){ drawMenu(); loadResource(); initgraph(800, 800); playGame(); closegraph(); return 0;}
写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
编程学习书籍分享:
编程学习视频分享:
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!
标签: #js打乱顺序 #funcode拼图游戏代码 #c语言注释部分 #c语言游戏设计过程 #c语言代码例子源码