一.前言

  • 这个俄罗斯方块同样也是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. html select以数组的方式提交
  2. python3.6运行界面_python3.6 +tkinter GUI编程 实现界面化的文本处理工具
  3. Python的注释及乱码 || 变量及类型
  4. 【干货】2014年值得仔细研究的十大神级文案
  5. php万年历上个月下个月,php 万年历
  6. 在CF卡上实现TrueFFS
  7. python selenium 处理弹窗_转:python selenium 弹出框处理的实现
  8. Maven 中 plugins 和 pluginManagement的区别
  9. element-ui源码阅读笔记(button篇)
  10. Ubuntu源码方式安装lua luarocks
  11. 乘风破浪,遇见未来元宇宙(Metaverse)之元宇宙重要基本元素之一,虚拟数字人行业洞察报告及未来趋势
  12. 更改网络计算机ip,教你快速修改电脑IP地址
  13. python微信定时发送消息
  14. 生产环境实战spark (5)分布式集群 5台设备之间hosts文件配置 ssh免密码登录
  15. 基于STM32单片机的远程智能浇花花盆GSM短信浇水补光方案原理图程序设计
  16. 安卓手机管理软件_留言帮忙找:手机清理软件合集 Android
  17. Java中如何定义一个数组呢?
  18. 数据库求候选码的算法
  19. 物联网 | HASS+MQTT+树莓派室内监测小型物联网系统
  20. 允许asp.net web程序的跨域访问

热门文章

  1. Android 项目接入网易云信IM单聊,群聊
  2. 代码整洁之道 1-3阅读笔记
  3. circular包绘图笔记
  4. 复杂网络实验报告2019210025曾培圣
  5. 【Android】AlarmManager实现定时任务和取消任务
  6. init和destory方法
  7. 【QT】判断鼠标按键
  8. ERROR 1819 (HY000): Your password does not satisfy the current policy requirements的解决方法
  9. 【FinE】资产组合理论(2) 均值方差模型
  10. 西游记研究之五:巨人的角逐