C++基于EasyX库如何实现拼图小游戏
发表于:2024-12-02 作者:千家信息网编辑
千家信息网最后更新 2024年12月02日,这篇"C++基于EasyX库如何实现拼图小游戏"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看
千家信息网最后更新 2024年12月02日C++基于EasyX库如何实现拼图小游戏
这篇"C++基于EasyX库如何实现拼图小游戏"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"C++基于EasyX库如何实现拼图小游戏"文章吧。
具体代码如下:
#pragma once#include#include #include #include #include #include #include #include using namespace std;static const int MAX_MAP = 30; //定义最大行或者列分块常量int check[MAX_MAP][MAX_MAP]; //检查数组int map[MAX_MAP][MAX_MAP]; //序号储存int random[MAX_MAP * MAX_MAP]; //随机化数组IMAGE img_total; //原图片IMAGE img_blank; //白底IMAGE img[MAX_MAP][MAX_MAP]; //储存分块图片int level = 3; //关卡难度int width_temp = 0; //分块宽度int height_temp = 0; //分块高度int flagi = 0; //标记块行位置int flagj = 0; //标记块列位置int mousei = 0; //标记鼠标位置int mousej = 0; //标记鼠标位置int FLAG = 0; //胜利标记void Get_graphics(); //读取图片并预载到原图中void Set_graphics(); //设置好图片位置及对应关系void Line_flush(); //画线条分割图片void Rand_array(); //初始化随机数组void Get_mouse(); //获取鼠标操作void Judge_graphics(); //判定是否通关并选择是否下一关void Show_graphics(); //显示分块图片inline void Get_graphics() //读取图片并预载到原图中{ loadimage(&img_total, L"1.png"); loadimage(&img_blank, L"0.png"); initgraph(img_total.getwidth(), img_total.getheight());}inline void Set_graphics() //设置好图片位置及对应关系{ width_temp = img_total.getwidth() / level; height_temp = img_total.getheight() / level; //载入各分块的图片 SetWorkingImage(&img_total); for (int i = 0; i < level; i++) { for (int j = 0; j < level; j++) getimage(&img[i][j], i * width_temp, j * height_temp, width_temp, height_temp); } SetWorkingImage(); //校验数组初始化 int cnt = 0; for (int i = 0; i < level; i++) { for (int j = 0; j < level; j++) { check[i][j] = cnt; cnt++; } }}inline void Line_flush() //画线条分割图片{ for (int i = 0; i < level; i++) { //setlinecolor(RED); //可以更改线条颜色 默认白色 line(i * width_temp, 0, i * width_temp, img_total.getheight()); line(0, i * height_temp, img_total.getwidth(), i * height_temp); }}inline void Rand_array() //初始化随机数组{ for (int i = 0; i < level * level; i++) random[i] = i; random_device rd; mt19937 g(rd()); // 随机数引擎 shuffle(random, random + level * level, g); // 打乱顺序 int cnt = 0; for (int i = 0; i < level; i++) { for (int j = 0; j < level; j++) { map[j][i] = random[cnt]; //逆转赋值1 cnt++; } }}void Get_mouse(){ MOUSEMSG msg = GetMouseMsg(); if (msg.uMsg == WM_LBUTTONDOWN) { mousei = msg.x / width_temp; mousej = msg.y / height_temp; if ((mousei + 1 == flagi && mousej == flagj) || (mousei == flagi && mousej + 1 == flagj) || (mousei - 1 == flagi && mousej == flagj) || (mousei == flagi && mousej - 1 == flagj)) { //交换图片分块 swap(map[mousej][mousei], map[flagj][flagi]); } }}void Judge_graphics(){ int cnt = 0; for (int i = 0; i < level; i++) { for (int j = 0; j < level; j++) { if (map[i][j] == check[i][j]) cnt++; } } if (cnt == level * level) { MessageBox(GetHWnd(), _T("过关了."), _T("消息提示."), MB_OK); FLAG = 1; exit(0); }}inline void Show_graphics() //显示分块图片{ for (int i = 0; i < level; i++) { for (int j = 0; j < level; j++) { if (map[j][i] == level * level - 1) //逆转赋值2 { flagi = i; flagj = j; putimage(i * width_temp, j * height_temp, &img_blank); } else { int countj = map[j][i] % level; int counti = map[j][i] / level; putimage(i * width_temp, j * height_temp, &img[countj][counti]); } } } Line_flush();}int main(){ Get_graphics(); Set_graphics(); Rand_array(); Show_graphics(); while (1) { BeginBatchDraw(); //双缓冲防止闪烁 Get_mouse(); Show_graphics(); EndBatchDraw(); //双缓冲防止闪烁 Judge_graphics(); } if (FLAG) { putimage(0, 0, &img_total); FLAG = 0; } system("pause"); return 0;}
以上就是关于"C++基于EasyX库如何实现拼图小游戏"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
图片
位置
内容
数组
标记
j++
小游戏
C++
线条
鼠标
原图
文章
知识
篇文章
缓冲
最大
代码
价值
关卡
大部分
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器的作用是什么
数据库 性能问题 定位
宝鸡市阳光网络技术有限公司直播
杭州智跃互联网科技有限公司
syslogng服务器
深圳服务器运维服务哪家好
局域网为什么访问不了服务器
中国有电脑服务器的浏览器
二进制数据库怎么变成字符
新乡唐唐网络技术有限公司
域名根服务器应急预案
上汽名爵服务器
从数据库中获取图片
网络安全法治化展望
大连东软软件开发薪资
自己的电脑可以当成服务器么
海西州软件开发应用范围
内蒙古在线网络技术咨询成交价
软件开发服务费 税点
广东节能软件开发业务
网络安全和应用交付
网络安全保护面临的困难
造谣疫情是否违反网络安全法
英雄联盟服务器什么时候修复
中专网络技术的课程
2020国家网络安全周启动
山东兆物网络技术怎么样
软件开发版本状态
关于网络安全的广播稿子
久和网络技术工作室官方帐号