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

STM32实现俄罗斯方块

[复制链接]
STMCU小助手 发布时间:2022-8-21 18:00
一.前言
; h& H1 @2 \7 z7 J这个俄罗斯方块同样也是DIY项目中的一个,和上一篇stm32贪吃蛇实现的过程一样,只需要一个.h和一个.c文件即可,与平台无关,根据俄罗斯方块中的数据,自行在目标显示设备上进行显示即可,非常方便。# j3 @2 B, a3 f6 ?9 [/ |5 R
这个俄罗斯方块的实现过程是基于我在FPGA实现俄罗斯方块设计思想来进行的。直接点,就是将Verilog代码重新用C语言写了一遍。(#.#)
1 x9 v& r& d# ?2 R% j! x1 [
$ n7 S( A& O" T% w" x; m二. 函数调用介绍
* r: P. C& o, e函数的使用也是异常的简单,只需要按顺序调用两个函数即可。在运行之前先调用初始化函数,然后再每个1s(多少时间间隔可以自行设置)调用一下游戏函数
( m7 U( h  s3 h 5f2bd838c3e345da91d4b61beb030fd8.png
, Z8 q6 g6 E! H
$ j1 s5 I1 t. {) l我的主函数如下。
) `! w  D7 r' e; j8 m  R( M) F9 f1 p
先对屏幕进行清屏,然后俄罗斯方块初始化,开始定时器49 `& R8 l$ L2 j& h) [
通过定时器3读取按键的值,然后根据按键的状态,进行相应的操作( l3 h( z, B' }6 d. u+ [& w0 o
通过定时器4,产生TetrisFlag标志,表示下落一格(为什么要放在这里,不直接在TIM4中调用呢?原因如下 : 下落是对当前图形中的数据进行操作,移动和变换也是,如果没有明确的执行顺序的话,可能某个时间段会同时对其进行操作,从而出现bug)
& E4 l7 V4 i; [3 O5 {! Y) o& Z/ z+ k, q
84ebb1e5a30e4dc3a8a8e170729873eb.png
4 q  V5 |# t3 x' \4 |# G
: l, _0 d* o2 J  c三. 核心函数介绍
& }( u+ J' p  C6 }/ l2 R- dTetrisInit()游戏初始化,刚开始对存储地图进行初始化,全部赋值为0,然后生成一下下一个图形,然后更新一下当前图形,再吃更新一下下一个图形。当前图形是通过下一个图形来赋值的。所以这里需要使用两个GenerateNext,然后是一些显示的函数。
7 a  X9 x$ Q! G# _, H# d4 S
* j) f- g- t% r0 A) R4 A+ {2 X+ v 0b06e89aff144e0eb2d115ce7e25d656.png
* q' N; ^0 G* O
0 @; q: X( c7 K: z8 K5 e: uTetrisGame()游戏函数 ,首先判断是否达到可以存储了,然后是的话,就继续消行判断,游戏介绍判断,以及更新当前图形,和生成下一个图形。如果没有的话,方块就下落一格。其他的都是与显示相关的操作。1 [, D! W' ?4 ^5 h4 i5 X

8 l9 j! w8 D. U; o3 T- ?- n 243c205630b3407db7d60aa105ba6a46.png   P1 w4 t% q6 [" U: i; a# y% _
' O3 X1 ]' }$ a; J0 N9 w- n
Rotate()旋转函数,旋转操作是直接套用Verilog的实现方式,将每一次旋转坐标的变化情况,都计算出来,然后写入。这部分也是是一个比较繁琐的事情。
! ?$ F- D$ U  g5 A8 C6 z- p6 w
& ~2 f7 }* r+ D7 D" V+ h 768b4906f75b4bca95e1b21d4353d616.png ) Q" f) c( H- w4 L* n1 |" l! i

- N) {1 T' {! j5 S+ p6 @8 o其他的函数我觉得都很容易实现,就不多介绍了,想学习的可以自行下载,如果有不明白的,可以微信公众号私聊我。2 Z2 \- O5 B/ ]
最后看一下.h函数吧4 i  b/ r7 h6 }' j5 t0 c( |; R
# w' a1 M' _6 a  I" k- S
443edf7dc47f43e698906d5326793ca5.png $ k2 C5 p8 Z: |
& L) x& l" n; G; Q9 B

' E. j, m. X+ o! q$ W' w7 k. I! o$ m
赞 收藏 评论1 发布时间:2022-8-21 18:00

举报

1个回答
y369369 回答时间:2022-9-15 15:42:55
游戏是个好想法,我看创客秀也有这个
! d" c8 ?$ p3 ~3 a5 y

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版