一. 前言

在我们的DIY套件上,终于集成了第三个小游戏----2048。怎么感觉做成了个游戏机呢(#.#)。
这款游戏也是非常流行的,玩起来也是非常的轻松,要想过关的话,还是需要一点的技巧。
欢迎关注 微信公众号 FPGA之旅 回复 stm32实现2048 获取文件

链接:
演示视频

二. 游戏规则简介

  1. 游戏地图为 4 * 4。
  2. 每次移动所以方块都会向指定的方向移动,同时会在地图上随机生成值为2或者4的方块。
  3. 在移动的过程中,如果相邻的两个方块的值一样,那么它们就会融合成一个值为它们之合的方块,每一次移动,只能进行一次融合。
  4. 如果方块中的值为2048,则游戏胜利。如果整个地图都被方块添满了,则游戏失败。

三. 核心代码介绍

方块的随机生成,和胜利的判断的实现都较为容易。整个游戏的核心部分为第三点,方块的移动和融合,这个部分如果弄懂了的话,整个游戏实现起来会非常容易。
先在Visual Studio实现这一过程的准确性,然后在搬运到keil中去,这一方便debug发现问题。

这里先合并,后移动

  1. 通过定义一个长度为4的数组,来模拟一行数据。
int Map[4] = { 0,8,0,8 };
  1. 通过循环来找到可以合并的两个数,将其合并
for (j = i + 1; j < 4; j++)
{//如果不为0,且当前选择的值也不为0,且和这个数不相等,则跳过if (Map[j] != Map[i] && Map[j] != 0)break;//如果有相等的两个方块,且中没有其余方块,进行融合if (Map[j] == Map[i]){Map[j] = 0; //先将这方块消除掉unsigned char k;for (k = i + 1; k < 3; k++){Map[k] = Map[k + 1]; //移动一次方块}Map[i] += Map[i];//更新融合后的方块的值Map[3] = 0;flag = 1;break;}
}
  1. 移动所有方块,直到所有方块都靠在一起
while (1)
{int j, flag = 0;for (i = 0; i < 3; i++){if (Map[i] == 0) //有空的方块,说明可以移动{Map[i] = Map[i + 1];Map[i + 1] = 0;}}for (j = 0; j < 3; j++){if (Map[j] == 0){int k;for (k = j + 1; k < 4; k++){if (Map[k] != 0) //判断是否继续移动{flag = 1;  break;}}}}if (flag == 0)break;
}
  1. 测试结果展示




完整测试代码


int main(void)
{int Map[4] = { 0,2,4,8};int i,flag = 0;int flags = 0;for (i = 0; i < 4; i++)printf("%d\t", Map[i]);printf("\n");for (i = 0; i < 3; i++){unsigned char j;for (j = i + 1; j < 4; j++){//如果不为0,且当前选择的值也不为0,且和这个数不相等,则跳过if (Map[j] != Map[i] && Map[j] != 0)break;//如果有相等的两个方块,且中没有其余方块if (Map[j] == Map[i]){Map[j] = 0;unsigned char k;for (k = i + 1; k < 3; k++){Map[k] = Map[k + 1];}Map[i] += Map[i];Map[3] = 0;flags = 1;break;}}while (1){int j, flag = 0;for (i = 0; i < 3; i++){if (Map[i] == 0){Map[i] = Map[i + 1];Map[i + 1] = 0;}}for (j = 0; j < 3; j++){if (Map[j] == 0){int k;for (k = j + 1; k < 4; k++){if (Map[k] != 0){flag = 1;break;}}}}if (flag == 0)break;}for (i = 0; i < 4; i++)printf("%d\t", Map[i]);printf("\n");}return flags;
}

STM32实现2048小游戏相关推荐

  1. python游戏代码五子棋_用20行Python代码实现2048小游戏,你会吗?

    前些天在b站上看到有个大佬用c写了一个2048小游戏,我便一下来了兴趣.心想着,我貌似也能用Python来整一波,话不多说,直接开搞. 2048的游戏规则: 2048游戏总共有16个格子,初始时会有两 ...

  2. python秒表游戏代码_用20行Python代码实现2048小游戏,你会吗?

    前些天在b站上看到有个大佬用c写了一个2048小游戏,我便一下来了兴趣.心想着,我貌似也能用Python来整一波,话不多说,直接开搞. 2048的游戏规则: 2048游戏总共有16个格子,初始时会有两 ...

  3. 我的名片能运行Linux和Python,还能玩2048小游戏,成本只要20元

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 猜猜它是什么?印着姓名.职位和邮箱,看起来是个名片.可是右下角有芯片,看起来又像是个PCB电路板. 其实它是一台超迷你的ARM计算机,不仅 ...

  4. python里graphics的使用_使用graphics.py实现2048小游戏

    1.过年的时候在手机上下载了2048玩了几天,心血来潮决定用py写一个,刚开始的时候想用QT实现,发现依赖有点大.正好看到graphics.py是基于tkinter做的封装就拿来练手,并借用了CSDN ...

  5. html css js实现快递单打印_JS与HTML、CSS实现2048小游戏(六)

    在前面的五篇文章中,小编带大家完成了网页版2048小游戏的基本游戏逻辑.但是在游戏结束的gameover()方法中咱们只是简单的通过alert来弹出一些信息,这样的话只能出现下图的效果.这样的游戏,不 ...

  6. C语言编写2048小游戏

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104992424 2 ...

  7. 使用JS实现2048小游戏

    JS实现2048小游戏源码 效果图: 代码如下,复制即可使用: (适用浏览器:360.FireFox.Chrome.Opera.傲游.搜狗.世界之窗. 不支持Safari.IE8及以下浏览器.) &l ...

  8. C语言 2048小游戏

    C语言之前写的2048小游戏,全是函数.数组 #include<stdio.h> #include<stdlib.h> #include<time.h> #incl ...

  9. ​.NET手撸2048小游戏

    前言 2048是一款益智小游戏,得益于其规则简单,又和 2的倍数有关,因此广为人知,特别是广受程序员的喜爱. 本文将再次使用我自制的"准游戏引擎" FlysEngine,从空白窗口 ...

最新文章

  1. asp 随机读取ID之Access
  2. java swing 外观框架_【GUI】一、Swing外观框架BeautyEye使用
  3. 大数据druid查询不支持分页_Druid实时大数据分析查询(六)
  4. 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离
  5. NFS 故障排错指南
  6. 你最隐秘的性格在哪?
  7. 赵平C语言,赵平智与OIOIC
  8. python3九九乘法表儿歌_python3: 简单4步骤输出九九乘法表
  9. 软件测试英语笔试,软件测试英文面试笔试题
  10. matlab共享变量,matlab如何编写共享参数拟合程序 - 程序语言 - 小木虫 - 学术 科研 互动社区...
  11. 5款最好的MySQL自由软件工具
  12. Arts 第六周(4/22 ~ 4/28)
  13. http/https/浏览器
  14. OPenGL笔记--创建三维图形(立方体)
  15. vSphere web client 虚拟机生成模板快速部署
  16. 用winscppwd查看winscp保存的密码
  17. 【转载】Windows下Tesseract4.0识别与中文手写字体训练
  18. 2019 年京东校招C++ 题目
  19. mysql xtrabackup安装_xtrabackup安装及使用
  20. php 运营商授权,PHP判断手机号运营商(详细介绍附代码)

热门文章

  1. php创建扑克牌,利用php模拟分发扑克牌(无聊之作)
  2. 我们应该怎样做时间管理?
  3. 三国、SOA以及关于自由的其他
  4. 图片太大不能上传怎么办?
  5. XYCMS企业建站系统默认数据库、后台拿WebShell
  6. 为什么我们一直深入底层
  7. 解决联想Thinkpad E430光盘或U盘无法启动重装系统(关闭 UEFI)
  8. linux官方桌面大图,Ubuntu 19.04官方壁纸揭晓
  9. 多码头间运输数学模型
  10. 记一个简单的Android计时器制作过程。