这篇文章主要为大家详细介绍了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-15for (i = 0; i < 15; i++){//0-14array1D[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++编程学习交流圈子,QQ群:829164294点击进入】微信公众号:C语言编程学习基地

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

编程学习视频分享:

C语言项目实战:《拼图游戏》零基础项目相关推荐

  1. Java综合项目:拼图游戏

    Java综合项目:拼图游戏 零.项目描述 1. 用户登录界面 2. 注册界面 3. 游戏界面 4. 素材 一.创建主界面 二.界面设置 三.制作菜单栏 四.添加图片 五.打乱图片 六.美化界面 七.移 ...

  2. yolov5使用2080ti显卡训练是一种什么样的体验我通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程。>>>>>>>>>第二章番外篇

    第二章番外篇:yolov5通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程.YOLOv5搭建的最快搭建方式,踩坑经历详谈 前期准备: 2 ...

  3. c语言课程设计--拼图游戏,C语言课程设计_拼图游戏.pdf

    C -- 语言课程设计 拼图游戏 一.实验内容 玩家通过鼠标单击相邻位有空位的方块来移动方块,从而最终将一副散乱的图片拼成完 整的图片.要求如下: 1. 游戏的初始界面如图一,单击空格键进入游戏,进入 ...

  4. C语言开发的拼图游戏

    C语言开发的拼图游戏 项目效果 话不多是直接干货 引用的头文件 菜单栏 主界面 加载图片 画图片 游戏代码 我的B站链接:[B站链接](https://space.bilibili.com/27474 ...

  5. 【源码+教程】Java桌球游戏_Java初级项目_Java练手项目_Java项目实战_Java游戏开发

    今天分享的Java开源游戏项目是桌球游戏,初学者也可以用来练习喔~课程详细讲解了一个桌球游戏的编写思路和流程,即使你刚学Java没多久,也可以跟随该教程视频完成属于你自己的桌球游戏!同时,还可以加深和 ...

  6. C语言入门知识1(零基础新手适用)

    C语言入门知识1(零基础新手适用) #程序语言 1.机器语言 机器语言是低级语言,是用01码来编写的二进制代码语言 2.汇编语言 汇编语言也是低级语言,是用英文字母和符号串编写的 3.高级语言 由于汇 ...

  7. Java实战---拼图游戏

    目录 1:拼图游戏的介绍 2:实战演示 (1)整体的窗体搭建 (2)菜单的搭建 (3)加载图片 (4)图片顺序的打乱 (5)实现图片的移动以及可以创建一些快捷键 (6)点击事件的实现 3:拼图游戏完整 ...

  8. 新书推荐:《Android Studio开发实战:从零基础到App上线》终章

    <Android Studio开发实战:从零基础到App上线>是一部Android开发的实战教程,由浅入深.由基础到高级,带领读者一步一步走进App开发的神奇世界. 全书共分为16章.其中 ...

  9. 【项目】基于SaaS的餐掌柜项目实战 阶段一 基于SaaS的餐掌柜项目实战 第1章 基础架构搭建 1 餐掌柜需求分析

    [项目]基于SaaS的餐掌柜项目实战 文章目录 [项目]基于SaaS的餐掌柜项目实战 阶段一 基于SaaS的餐掌柜项目实战 第1章 基础架构搭建 1 餐掌柜需求分析 1.1 餐饮行业分析 1.2 餐饮 ...

  10. Pytorch项目实战聊天机器人(02.项目的准备阶段)

    Pytorch项目实战聊天机器人(02.项目的准备阶段) 02.项目的准备阶段 二.2-2 NLP涉及知识 三.2-3 NLTK库 四 ,2-4 语料和词性标注 五 ,2-5 分词 六 , 2-6 T ...

最新文章

  1. 《软件构架实践》阅读笔记三
  2. linux中普通用户用友所有权限,linux文件的特殊权限
  3. apache负载均衡的安装和实现方法
  4. :after伪类+content内容清除浮动
  5. 谷歌地图插件Mapsed.js
  6. android 加载大长图,android加载长图片的方法
  7. (12)System Verilog 数组查找常数
  8. 最新安徽省二c语言题型_2020年成人高考考试考前1个月最新最全备考攻略+资料,考生必看,建议收藏!...
  9. html加载富文本_富文本图片懒加载解决方案
  10. 自己组装电脑配置清单 2021年组装电脑配置清单推荐
  11. vsftpd移植到ARM开发板
  12. Facebook的新算法可以预测出你的贫富阶级
  13. WSL (Windows Subsystem for Linux) wsl1+wsl2+对比+在线安装+离线安装+版本转换+右键菜单+外网访问
  14. vm时序数据库-导入数据
  15. java 寻找峰值峰谷_Java实现 LeetCode 162 寻找峰值
  16. Excel中按多个符号进行分列
  17. 迎接互联网的明天--玩转3D Web
  18. 第十章 决策树与随机森林
  19. MySQL explain 例子_MySQL EXPLAIN结果集分析 - 附带大量案例
  20. Apple Watch开发

热门文章

  1. 论“劲舞团”与青少年健康
  2. 经常说的数据仓库,是如何存储数据的
  3. HTML的上标标签与下标标签
  4. mysql常用函数之(过目不忘)
  5. 读书与短视频什么更重要?---养浩有感
  6. 爱你的男人,会主动给你的
  7. 服务器断电导致虚拟机数据丢失怎么恢复?
  8. 判断对象是否为空工具类
  9. 酒鬼私定,只是酒鬼酒一次破圈营销?
  10. Vue 基础第二次再次回顾