概述
别的不多说,先上效果图
我们都知道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<<a[i][j]<<" "; else if(a[i][j]>100) cout<<a[i][j]<<" "; else if(a[i][j]>10) cout<<" "<<a[i][j]<<" "; else cout<<" "<<a[i][j]<<" "; } else { cout<<" "; } } cout<<"n"; } }
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小游戏的全部内容,希望文章能够帮你解决利用c++编写简易版2048小游戏所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复