请选择 进入手机版 | 继续访问电脑版

[C 语言] 利用 c++编写简易版2048小游戏

[复制链接]
查看181 | 回复28 | 2021-9-12 14:00:56 | 显示全部楼层 |阅读模式
目次

别的不多说,先上结果 图

利用

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

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

初始化时间 先恣意 天生 两个目标

利用

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

1、程序初始化

  1. // 程序初始化
  2. void init()
  3. {
  4. score = 0;
  5. memset(a, 0, sizeof(a));
  6. int x1 = rand() % 4 + 1, y1 = rand() % 4 + 1, x2 = rand() % 4 + 1, y2 = rand() % 4 + 1; // 随机生成两个初始点
  7. a[x1][y1] = a[x2][y2] = 2; // 初始点初始化为 2
  8. }
复制代码

2、画图操作

画图操作,就是把有数组都打印出来,数字为0的就打印空字符,数字不为0的,就打印数字。

  1. void drawmap()
  2. {
  3. system("cls");
  4. for (int i = 1; i <= 4; i++)
  5. {
  6. for (int j = 1; j <= 4; j++)
  7. {
  8. if (a[i][j]) // 如果该位置没有数字,则不绘制
  9. {
  10. if(a[i][j]>1000)
  11. cout<<a[i][j]<<" ";
  12. else if(a[i][j]>100)
  13. cout<<a[i][j]<<" ";
  14. else if(a[i][j]>10)
  15. cout<<" "<<a[i][j]<<" ";
  16. else
  17. cout<<" "<<a[i][j]<<" ";
  18. }
  19. else
  20. {
  21. cout<<" ";
  22. }
  23. }
  24. cout<<"\n";
  25. }
  26. }
复制代码

3、字符控制

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

  1. // 玩家操作
  2. void move()
  3. {
  4. memcpy(b, a, sizeof(a)); // 将 a 备份至 b
  5. memset(mov, false, sizeof(mov)); // 初始化 mov 为 false(所有点均未移动)
  6. char c;
  7. cin>>c;
  8. if(c=='w') //向上
  9. {
  10. for (j = 1; j <= 4; j++)
  11. for (i = 2; i <= 4; i++)
  12. {
  13. if (!a[i][j])continue;
  14. int k = i;
  15. while (!a[k - 1][j] && k >= 2)
  16. {
  17. a[k - 1][j] = a[k][j];
  18. a[k][j] = 0;
  19. k--;
  20. }
  21. if (a[k][j] == a[k - 1][j] && !mov[k - 1][j])
  22. {
  23. a[k - 1][j] = 2 * a[k][j];
  24. a[k][j] = 0;
  25. mov[k - 1][j] = true;
  26. score += a[k - 1][j];
  27. }
  28. }
  29. }
  30. else if(c=='s') //向下
  31. {
  32. //。。。
  33. }
  34. else if(c=='a') //向左
  35. {
  36. //。。。
  37. }
  38. else if(c=='d')
  39. {
  40. }
  41. }
复制代码

4、判定 游戏竣事 和游戏胜利

// 判定 游戏竣事 ,对于恣意 一个位置,该位置为空 或 附近 有位置上的数字与该位置上数字相当 ,阐明 可继续移动(游戏可继续),否则游戏竣事

// 判定 胜利,有恣意 一个位置达到 2048,则胜利

  1. bool gameover()
  2. {
  3. for (i = 1; i <= 4; i++)
  4. for ( j = 1; j <= 4; j++)
  5. 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;
  6. return true;
  7. }
  8. bool win()
  9. {
  10. for ( i = 1; i <= 4; i++)
  11. for ( j = 1; j <= 4; j++)
  12. if (a[i][j] == 256)return true;
  13. return false;
  14. }
复制代码

到此这篇关于使用 c++编写简易版2048小游戏的文章就先容 到这了,更多干系 c++编写简易版2048小游戏内容请搜索 脚本之家从前 的文章或继续欣赏 下面的干系 文章渴望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 东阿制造 | 2021-9-18 08:38:04 | 显示全部楼层
有品位!
回复

使用道具 举报

avatar 湿湿二 | 2021-9-18 16:35:31 | 显示全部楼层
精华帖的节奏啊!
回复

使用道具 举报

avatar 群主713 | 2021-9-22 05:22:17 | 显示全部楼层
admin楼主写的很经典!
回复

使用道具 举报

avatar 清荼蘼荼iq | 2021-9-27 11:06:59 | 显示全部楼层
admin楼主是在找骂么?
回复

使用道具 举报

avatar bfdg3 | 2021-10-5 17:00:39 | 显示全部楼层
我裤子脱了,纸都准备好了,你就给我看这个?
回复

使用道具 举报

avatar 阳子1989 | 2021-10-8 08:28:47 | 显示全部楼层
admin楼主看起来很有学问!
回复

使用道具 举报

avatar 我的承诺只给你 | 2021-10-9 12:46:07 | 显示全部楼层
admin楼主的病已经好了百分之六十二了!
回复

使用道具 举报

avatar 素色流年783 | 2021-10-16 00:03:45 | 显示全部楼层
admin楼主的头像是本人吗?
回复

使用道具 举报

avatar 七七小嗳 | 2021-10-16 12:16:33 | 显示全部楼层
知识就是力量啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则