OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4600|回复: 1

STM32实现俄罗斯方块小游戏

[复制链接]

3

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2021-1-18
在线时间
1 小时
发表于 2022-7-14 22:39:38 | 显示全部楼层 |阅读模式
# 一.前言
- 这个俄罗斯方块同样也是DIY项目中的一个,和上一篇[stm32贪吃蛇](https://blog.csdn.net/weixin_44678052/article/details/124371280)实现的过程一样,只需要一个.h和一个.c文件即可,与平台无关,根据俄罗斯方块中的数据,自行在目标显示设备上进行显示即可,非常方便。
- 这个俄罗斯方块的实现过程是基于我在[FPGA实现俄罗斯方块](https://blog.csdn.net/weixin_446 ... 1001.2014.3001.5502)设计思想来进行的。直接点,就是将Verilog代码重新用C语言写了一遍。(#^.^#)
- 欢迎━(*`∀′*)ノ亻!关注微信公众号 **FPGA之旅** 回复 **stm32俄罗斯方块** 获取对应的文件
**链接:**
[演示视频](https://www.bilibili.com/video/B ... id_from=333.999.0.0)
---
# 二. 函数调用介绍
函数的使用也是异常的简单,只需要按顺序调用两个函数即可。**在运行之前先调用初始化函数,然后再每个1s(多少时间间隔可以自行设置)调用一下游戏函数**
![在这里插入图片描述](?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aWL5paX5bCP6bmP,size_15,color_FFFFFF,t_70,g_se,x_16)
我的主函数如下。
- 先对屏幕进行清屏,然后俄罗斯方块初始化,开始定时器4
- 通过定时器3读取按键的值,然后根据按键的状态,进行相应的操作
- 通过定时器4,产生TetrisFlag标志,表示下落一格(为什么要放在这里,不直接在TIM4中调用呢?**原因如下 : 下落是对当前图形中的数据进行操作,移动和变换也是,如果没有明确的执行顺序的话,可能某个时间段会同时对其进行操作,从而出现bug)**


![在这里插入图片描述](?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aWL5paX5bCP6bmP,size_20,color_FFFFFF,t_70,g_se,x_16)

-----

##  三. 核心函数介绍
1. TetrisInit()游戏初始化,刚开始对存储地图进行初始化,全部赋值为0,然后生成一下下一个图形,然后更新一下当前图形,再吃更新一下下一个图形。当前图形是通过下一个图形来赋值的。所以这里需要使用两个GenerateNext,然后是一些显示的函数。![在这里插入图片描述](?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aWL5paX5bCP6bmP,size_20,color_FFFFFF,t_70,g_se,x_16)

2. TetrisGame()游戏函数 ,首先判断是否达到可以存储了,然后是的话,就继续消行判断,游戏介绍判断,以及更新当前图形,和生成下一个图形。如果没有的话,方块就下落一格。其他的都是与显示相关的操作。
![在这里插入图片描述](?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aWL5paX5bCP6bmP,size_20,color_FFFFFF,t_70,g_se,x_16)
3. Rotate()旋转函数,旋转操作是直接套用Verilog的实现方式,将每一次旋转坐标的变化情况,都计算出来,然后写入。这部分也是是一个比较繁琐的事情。![在这里插入图片描述](?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aWL5paX5bCP6bmP,size_20,color_FFFFFF,t_70,g_se,x_16)

其他的函数我觉得都很容易实现,就不多介绍了,想学习的可以自行下载,如果有不明白的,可以微信公众号私聊我。
最后看一下.h函数吧
![在这里插入图片描述](?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aWL5paX5bCP6bmP,size_19,color_FFFFFF,t_70,g_se,x_16)

---



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

237

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1110
金钱
1110
注册时间
2019-5-6
在线时间
128 小时
发表于 2022-7-17 14:18:39 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 15:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表