利用c++编写简易版2048小游戏
目录
- 1、程序初始化
- 2、画图操作
- 3、字符控制
- 4、判断游戏结束和游戏胜利
文章图片
我们都知道2048是个4 4的方格,为了方便数组下表我们生成5 5的数组,只用到1~4的下标。
初始化时候先随便生成两个目标
文章图片
1、程序初始化
// 程序初始化void init(){ score = 0; memset(a, 0, sizeof(a)); int x1 = rand() % 4 + 1, y1 = rand() % 4 + 1, x2 = rand() % 4 + 1, y2 = rand() % 4 + 1; // 随机生成两个初始点 a[x1][y1] = a[x2][y2] = 2; // 初始点初始化为 2}
2、画图操作 画图操作,就是把有数组都打印出来,数字为0的就打印空字符,数字不为0的,就打印数字。
void drawmap(){ system("cls"); for (int i = 1; i <= 4; i++) {for (int j = 1; j <= 4; j++){if (a[i][j])// 如果该位置没有数字,则不绘制{if(a[i][j]>1000)cout<100)cout<10)cout<<" "<
3、字符控制 然后就是移动了,我这里用输入字符控制,用wsad,控制上下左右。
// 玩家操作void move(){ memcpy(b, a, sizeof(a)); // 将 a 备份至 b memset(mov, false, sizeof(mov)); // 初始化 mov 为 false(所有点均未移动) char c; cin>>c; if(c=='w') //向上 {for (j = 1; j <= 4; j++)for (i = 2; i <= 4; i++){if (!a[i][j])continue; int k = i; while (!a[k - 1][j] && k >= 2){a[k - 1][j] = a[k][j]; a[k][j] = 0; k--; }if (a[k][j] == a[k - 1][j] && !mov[k - 1][j]){a[k - 1][j] = 2 * a[k][j]; a[k][j] = 0; mov[k - 1][j] = true; score += a[k - 1][j]; }} } else if(c=='s') //向下 {//。。。 } else if(c=='a') //向左 {//。。。 } else if(c=='d') { }}
4、判断游戏结束和游戏胜利 // 判断游戏结束,对于任意一个位置,该位置为空 或 四周有位置上的数字与该位置上数字相等,说明可继续移动(游戏可继续),否则游戏结束
// 判断胜利,有任意一个位置达到 2048,则胜利
bool gameover(){ for (i = 1; i <= 4; i++)for ( j = 1; j <= 4; j++)if (!a[i][j] || a[i][j] == a[i + 1][j] || a[i][j] == a[i - 1][j] || a[i][j] == a[i][j + 1] || a[i][j] == a[i][j - 1])return false; return true; }bool win(){ for ( i = 1; i <= 4; i++)for ( j = 1; j <= 4; j++)if (a[i][j] == 256)return true; return false; }
【利用c++编写简易版2048小游戏】到此这篇关于利用c++编写简易版2048小游戏的文章就介绍到这了,更多相关c++编写简易版2048小游戏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- opencv|opencv C++模板匹配的简单实现
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- 编写字典程序
- c++基础概念笔记
- 用npm发布一个包的教程并编写一个vue的插件发布
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- 【万伽复利】什么是复利(如何利用复利赚钱?)
- 苹果手机如何利用库乐队自制铃声
- 依赖注入模块