服务器之家

服务器之家 > 正文

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

时间:2021-12-31 15:05     来源/作者:诗一样的代码

别的不多说,先上效果图

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

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

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

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

 

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小游戏内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.cn/post/7001307978062102536

标签:

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
返回顶部