STM32实现俄罗斯方块

简介: 笔记

一.前言


这个俄罗斯方块同样也是DIY项目中的一个,和上一篇stm32贪吃蛇实现的过程一样,只需要一个.h和一个.c文件即可,与平台无关,根据俄罗斯方块中的数据,自行在目标显示设备上进行显示即可,非常方便。

这个俄罗斯方块的实现过程是基于我在FPGA实现俄罗斯方块设计思想来进行的。直接点,就是将Verilog代码重新用C语言写了一遍。(#.#)

欢迎━(`∀´)ノ亻!关注微信公众号 FPGA之旅 回复 stm32俄罗斯方块 获取对应的文件

链接:

演示视频


二. 函数调用介绍


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

1.png

我的主函数如下。


先对屏幕进行清屏,然后俄罗斯方块初始化,开始定时器4

通过定时器3读取按键的值,然后根据按键的状态,进行相应的操作

通过定时器4,产生TetrisFlag标志,表示下落一格(为什么要放在这里,不直接在TIM4中调用呢?原因如下 : 下落是对当前图形中的数据进行操作,移动和变换也是,如果没有明确的执行顺序的话,可能某个时间段会同时对其进行操作,从而出现bug)


2.png

三. 核心函数介绍


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

3.png

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

4.png

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

5.png

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

最后看一下.h函数吧

6.png

公众号:FPGA之旅

目录
相关文章
|
存储 数据安全/隐私保护
STM32实战项目—密码锁
本文完整详细地介绍了一个密码锁项目的要求,设计思路,程序实现,问题总结和成果展示内容。
307 2
STM32实战项目—密码锁
|
3月前
stm学习 3-3 蜂鸣器
stm学习 3-3 蜂鸣器
36 0
|
8月前
|
算法 定位技术 C语言
51单片机实现俄罗斯方块游戏编程
设计了一款基于AT89C51单片机的俄罗斯方块游戏机,使用LCD12864液晶显示,按键控制方块移动与变形。游戏中,7种不同形状的方块随机下落,填满一行得分,满屏则游戏结束。包含电源、单片机最小系统、LCD和按键模块的硬件电路通过Proteus进行了仿真,展示了游戏运行、得分和计时等。代码部分展示了检查碰撞和更新地图的函数。
178 1
|
传感器 算法
STM32智能小车循迹教程
STM32智能小车循迹教程
1043 0
STM32智能小车 0基础教学(驱动小车电机)
STM32智能小车 0基础教学(驱动小车电机)
633 0
|
存储 异构计算
|
定位技术 异构计算
【STC15单片机】简单的矩阵键盘代码
【STC15单片机】简单的矩阵键盘代码
270 0
蓝桥杯 stm32 按键点灯 CubeMX
从图中我们可以看到有 4个按键,B1 , B2 , B3 , B4。 对应的 GPIO 端口是 PB0 , PB1, PB2 ,PA0。 当按键按下,IO 口读到低电平;按键弹起,IO 口读到高电平。 LED 的原理图,CubeMX 配置,以及代码讲解都在我的上篇文章 里详细讲解了,这 篇文章主要为大家讲解 按键 的使用。 蓝桥杯嵌入式之 LED 闪烁
160 0
【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32
【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32
736 0