你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32实现俄罗斯方块

[复制链接]
STMCU小助手 发布时间:2022-8-21 18:00
一.前言
% Z3 q( A& f# u6 s0 K3 T, g0 R这个俄罗斯方块同样也是DIY项目中的一个,和上一篇stm32贪吃蛇实现的过程一样,只需要一个.h和一个.c文件即可,与平台无关,根据俄罗斯方块中的数据,自行在目标显示设备上进行显示即可,非常方便。5 w& X; K+ q0 k! x# O6 e6 |
这个俄罗斯方块的实现过程是基于我在FPGA实现俄罗斯方块设计思想来进行的。直接点,就是将Verilog代码重新用C语言写了一遍。(#.#)9 [* h" e1 h+ x, h. I

1 k( f" H0 h+ _- _5 d9 c) c二. 函数调用介绍
8 P5 v4 K/ Z4 d! U) \9 M( |函数的使用也是异常的简单,只需要按顺序调用两个函数即可。在运行之前先调用初始化函数,然后再每个1s(多少时间间隔可以自行设置)调用一下游戏函数5 B' W2 Y3 K5 R  v4 ~9 Y8 g
5f2bd838c3e345da91d4b61beb030fd8.png 9 y9 W$ o: L" P4 I4 C8 s) V6 I
/ Q* C! \; W- g# _3 {9 T5 Z9 L
我的主函数如下。
) ?. U$ t7 v$ ^9 a; i
+ z8 T% B1 c+ S. j: |先对屏幕进行清屏,然后俄罗斯方块初始化,开始定时器4* t; f/ L: N9 U& r
通过定时器3读取按键的值,然后根据按键的状态,进行相应的操作  }5 y1 M( r6 ?; _
通过定时器4,产生TetrisFlag标志,表示下落一格(为什么要放在这里,不直接在TIM4中调用呢?原因如下 : 下落是对当前图形中的数据进行操作,移动和变换也是,如果没有明确的执行顺序的话,可能某个时间段会同时对其进行操作,从而出现bug)
0 e- D' z  y4 @- V- v( C% L2 L
+ z! F8 X. \6 h+ l 84ebb1e5a30e4dc3a8a8e170729873eb.png - I# g3 Z. [$ K4 S8 {! I
' E1 z/ c. D6 d4 f4 o9 j
三. 核心函数介绍7 y8 ^- n. w) V. _) E7 v
TetrisInit()游戏初始化,刚开始对存储地图进行初始化,全部赋值为0,然后生成一下下一个图形,然后更新一下当前图形,再吃更新一下下一个图形。当前图形是通过下一个图形来赋值的。所以这里需要使用两个GenerateNext,然后是一些显示的函数。4 X) k$ \, }; {: n! S" c* O, C
, e, Y' o8 M! @% s, l, A
0b06e89aff144e0eb2d115ce7e25d656.png
% W8 ?3 z) L/ f+ [9 O) r
7 `0 i( v( B- k! {  \/ H! ~5 KTetrisGame()游戏函数 ,首先判断是否达到可以存储了,然后是的话,就继续消行判断,游戏介绍判断,以及更新当前图形,和生成下一个图形。如果没有的话,方块就下落一格。其他的都是与显示相关的操作。- r- k7 v5 f$ h
) O3 Z. f( j& W% r- w. ^/ @7 d. c
243c205630b3407db7d60aa105ba6a46.png
& @0 U1 S: S+ A: q( S( G' @( Q0 f1 A& f  _; P
Rotate()旋转函数,旋转操作是直接套用Verilog的实现方式,将每一次旋转坐标的变化情况,都计算出来,然后写入。这部分也是是一个比较繁琐的事情。
  o# B4 c& s$ E9 S" ]7 f% H6 B& H* v, x% N7 Q; O' p7 I
768b4906f75b4bca95e1b21d4353d616.png
: j- i2 d$ G# \0 m- d) [9 S% G1 q  p! E
其他的函数我觉得都很容易实现,就不多介绍了,想学习的可以自行下载,如果有不明白的,可以微信公众号私聊我。
% ~0 f* t$ r- C1 s5 j最后看一下.h函数吧! e2 w% i; ~5 H$ H

. Q5 j5 J! j+ s 443edf7dc47f43e698906d5326793ca5.png - G  w7 q) l* G8 y: T9 f8 h! P# X
* i( A: L! J# p2 I. k

+ }  h2 Y$ r" Y( l: h! t9 M
收藏 评论1 发布时间:2022-8-21 18:00

举报

1个回答
y369369 回答时间:2022-9-15 15:42:55
游戏是个好想法,我看创客秀也有这个# I( f# i% S* K3 O( U& i& Y' Z

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版