一.前言

  • 这个俄罗斯方块同样也是DIY项目中的一个,和上一篇stm32贪吃蛇实现的过程一样,只需要一个.h和一个.c文件即可,与平台无关,根据俄罗斯方块中的数据,自行在目标显示设备上进行显示即可,非常方便。
  • 这个俄罗斯方块的实现过程是基于我在FPGA实现俄罗斯方块设计思想来进行的。直接点,就是将Verilog代码重新用C语言写了一遍。(#.#)
  • 欢迎━(`∀´)ノ亻!关注微信公众号 FPGA之旅 回复 stm32俄罗斯方块 获取对应的文件
    链接:
    演示视频

二. 函数调用介绍

函数的使用也是异常的简单,只需要按顺序调用两个函数即可。在运行之前先调用初始化函数,然后再每个1s(多少时间间隔可以自行设置)调用一下游戏函数

我的主函数如下。

  • 先对屏幕进行清屏,然后俄罗斯方块初始化,开始定时器4
  • 通过定时器3读取按键的值,然后根据按键的状态,进行相应的操作
  • 通过定时器4,产生TetrisFlag标志,表示下落一格(为什么要放在这里,不直接在TIM4中调用呢?原因如下 : 下落是对当前图形中的数据进行操作,移动和变换也是,如果没有明确的执行顺序的话,可能某个时间段会同时对其进行操作,从而出现bug)


三. 核心函数介绍

  1. TetrisInit()游戏初始化,刚开始对存储地图进行初始化,全部赋值为0,然后生成一下下一个图形,然后更新一下当前图形,再吃更新一下下一个图形。当前图形是通过下一个图形来赋值的。所以这里需要使用两个GenerateNext,然后是一些显示的函数。

  2. TetrisGame()游戏函数 ,首先判断是否达到可以存储了,然后是的话,就继续消行判断,游戏介绍判断,以及更新当前图形,和生成下一个图形。如果没有的话,方块就下落一格。其他的都是与显示相关的操作。

  3. Rotate()旋转函数,旋转操作是直接套用Verilog的实现方式,将每一次旋转坐标的变化情况,都计算出来,然后写入。这部分也是是一个比较繁琐的事情。

其他的函数我觉得都很容易实现,就不多介绍了,想学习的可以自行下载,如果有不明白的,可以微信公众号私聊我。
最后看一下.h函数吧


DIY成品敬请期待

STM32实现俄罗斯方块相关推荐

  1. 基于stm32单片机俄罗斯方块小游戏Proteus仿真

     资料编号:150​​​​​​​ 视频讲解: 150-基于stm32单片机俄罗斯方块小游戏Proteus仿真(源码+仿真+全套资料) 功能介绍: 通过stm32单片机作为主控,在LCD点阵屏上做出俄罗 ...

  2. 基于stm32的俄罗斯方块游戏机(1、硬件准备)(大三寒假)

    概述:这个项目是做一个俄罗斯方块的游戏机,还原经典,该有的功能都要有. 硬件准备:一块stm32f103c8t6(只要是f103系列的最后编译应该都可以通过):一块LCD(2.2寸 220X176): ...

  3. 基于stm32的俄罗斯方块游戏机(3、俄罗斯方块生成函数)(大三寒假)

    概述:上一篇中介绍了lcd的驱动函数,最后得到了一个函数,可以在lcd上任意位置作点:这就让我们可以画出一共十九个俄罗斯方块图形(包括同种图形的变化体) 如图一共有这么多中方块,在这个我给他们分别标注 ...

  4. 基于stm32的俄罗斯方块游戏机(5、俄罗斯方块产生的随机函数)(大三寒假)

    很多人第一眼看到就想到了rank()函数:但是这个函数生成的随机数是一个伪随机数,这就意味着每次断电后重新启动就会和上一次出现的随机数一模一样的顺序,这就导致了每次方块的顺序都是一样的. 还有一个函数 ...

  5. 基于stm32的俄罗斯方块游戏机(4、俄罗斯方块基本规则函数)(大三寒假)

    申明一下,本项目里面的执行函数,算法,都是我个人的理解.算法可能比较垃圾,可能好在32的处理能力还可以,所以最后也成功了.如果你有更好的算法或者认为我的很垃圾,能交流交流更好,但千万不要喷! 我个人觉 ...

  6. 基于stm32的俄罗斯方块游戏机(2、LCD的驱动)(大三寒假)

    我用到的是一块16位彩色的172X220的LCD. 解决那些繁琐的通讯和规定指令后,最终需要的是一个函数,可以实现给定x,y坐标和颜色,然后画出对应的点.这个可以说是最基本的函数,只要可以作点,就可以 ...

  7. 基于stm32的俄罗斯方块游戏机(6、游戏机整体的操作页面)(大三寒假)

    本来准备介绍一下代码,想想还是算了,因为这些程序都嵌套在主程序里面写的挺乱的,给出工程文件大家直接下载看看吧点击下载 然后在给一些我手上这个成品的效果图 游戏中途暂停 消除计分 游戏失败后 总工程文件 ...

  8. 海军工程大学学生电子课程-DIY Final预验收

    □ 陈少昌: DIYfinal:八个提升项目(口袋示波器,信号发生器,俄罗斯方块,智能课音,电子胸牌,电子沙漏,北斗定位)和一个基础项目(ADDA Demo)基本功能全部实现.同学们真正学会知识具备基 ...

  9. 基于stm32、0.96寸OLED实现的俄罗斯方块小游戏(详细源码注释)

    概述:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的俄罗斯方块小游戏.项目源码地址:点击下载. 硬件要求: 普通摇杆,两个电位器和一个开关组成,左右摇动控制一个电 ...

最新文章

  1. 浅谈MySQL中utf8和utf8mb4的区别
  2. CvBlobTrackerCC 多目标跟踪算法简析
  3. 40题刷爆Keras,人生苦短我选Keras
  4. LeetCode题解之Copy List with Random Pointer
  5. status c语言_STM32 嵌入式C语言教程--第四课C语言中的存储空间与位域
  6. LimeSurvey问卷调查管理系统
  7. C++环境的配置( windows)
  8. 如何修改以及删除数据库中的表
  9. 人工智能与深度学习概念(5)——目标检测-RCNN
  10. Unity4.6版本下载
  11. Opencv之.convertTo
  12. 基于SpringBoot的酒店管理系统
  13. vb6判断操作系统版本-从win95到win7
  14. 解决联想电脑插入耳机没有声音问题
  15. HCIA-Cloud Computing华为云计算IA认证笔记
  16. 微软 DevRel 中国团队热招软件工程师
  17. java excel 创建控件_Java 添加、删除Excel表单控件
  18. C语言扫雷游戏代码以及基本原理教学(一看就会)
  19. Android Notification取消声音 取消弹出
  20. 解决Could not resolve XXX

热门文章

  1. 使用next(iter(data.DataLoader())报错StopIteration
  2. /etc/security/limits.conf 控制文件描述符,进程数,栈大小等
  3. 微信小程序 发送模板消息的功能实现
  4. 手把手教你创建群晖nas「共享文件夹」,从此告别 U 盘和低效传输
  5. C语言 运算符优先级表
  6. 解决element-ui数字输入框的问题
  7. day15-Linux的优化
  8. 国产spfa瞎几把嗨
  9. 樊登读书会用事实说话读后感_樊登读书《用事实说话》读书笔记
  10. PV_Characteristic:基于MATLAB/Simulink的光伏特性程序