STM32实现俄罗斯方块

一.前言

  • 这个俄罗斯方块同样也是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成品敬请期待

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
STM32F103是一款强大的微控制器,它具备丰富的外设和强大的处理能力,非常适合用于实现俄罗斯方块游戏。 首先,我们需要将STM32F103连接到显示器,以显示游戏界面和方块。可以选择使用LCD显示屏或者LED矩阵等适合的外设。通过控制STM32F103的GPIO口,我们可以实现游戏界面的绘制和方块的显示。 其次,我们需要实现方块的移动和旋转。STM32F103的GPIO口可以用作输入口,通过检测按键信号,我们可以控制方块的上下左右移动以及旋转。可以使用外部中断来检测按键的触发,并在中断服务程序中处理方块的移动和旋转操作。 此外,我们还需要实现游戏的逻辑。可以使用STM32F103的定时器来产生一定时间间隔的中断,用于更新游戏界面和判断方块的下降和碰撞检测。在定时器中断服务程序中,我们可以更新游戏界面的显示,并判断方块是否可以继续下降或者与已有的方块发生碰撞。 最后,我们可以使用STM32F103的串口通信功能,将游戏得分和其他状态信息通过串口输出,以便与外部设备进行通信或者显示。 总结来说,通过使用STM32F103的外设和强大处理能力,我们可以实现俄罗斯方块游戏的各种功能,包括游戏界面的显示,方块的移动和旋转,游戏逻辑的控制以及与外部设备的通信。这样我们可以在STM32F103的控制下,尽情享受俄罗斯方块游戏带来的乐趣。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值