c++编写简易版2048小游戏
创始人
2024-02-18 22:50:05
0

c++编写简易版2048小游戏

我们都知道2048是个44的方格,为了方便数组下表我们生成55的数组,只用到1~4的下标。

初始化时候先随便生成两个目标

// 程序初始化
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
}

画图操作,就是把有数组都打印出来,数字为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<<" "<cout<<" ";}}cout<<"\n";}}

然后就是移动了,我这里用输入字符控制,用wsad,控制上下左右。

// 玩家操作
void move()
{memcpy(b, a, sizeof(a));			// 将 a 备份至 bmemset(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'){}
}

还有判断游戏结束和游戏胜利

// 判断游戏结束

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()
{// 有任意一个位置达到 2048,则胜利for ( i = 1; i <= 4; i++)for ( j = 1; j <= 4; j++)if (a[i][j] == 256)return true;return false;
}

其实这个2048小游戏并不是特别的难,主要难点在于算法。只要算法思想了解之后,就可以很简单地做出一个完整的游戏。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...