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

STM32贪吃蛇实现

[复制链接]
STMCU小助手 发布时间:2022-8-21 18:00
一. 前言
  y* r* `. h% }4 x最近在弄一个桌面小摆件的DIY,在里面弄了一个贪吃蛇的小游戏,在stm32f103平台上实现,通过tft模块进行显示。不加显示部分的话,贪吃蛇游戏与平台无关,可以轻松添加到自己其他平台项目的代码中,也是便于学习,其中蛇数据的存储使用到了链表结构,下面来让我其做一个简单的介绍吧。
. v6 ~' h3 J1 P/ IC代码可以关注微信公众号 FPGA之旅 回复 stm32贪吃蛇获取(不是工程文件,需要自己根据贪吃蛇的数据进行绘制显示)% A! _. F7 Y$ P& x- W' G3 z9 p

. Z. I9 J0 L! J; c二. 游戏整体介绍
: u  Z) }- _" h0 X) N7 P7 e3 y
先来看看下图,如果蛇移动的速度为1s的话,就每隔1s调用一下这个函数即可(先要初始化一下蛇的长度和食物的位置以及移动方向),非常方便。
' ^" z% E6 t6 e# A; F7 y3 w2 {; `# F+ f; |
JudgeCrossDeal : 通过方向来移动蛇的移动  j1 V" \' o( \7 P9 Y) n- w
EatFoodOrNot : 判断是否吃到食物
3 q: O! O# f  F* l; ~: K; ^3 O' pEated : 吃到食物更新蛇的长度& t: [( R; e$ i9 J6 e% j0 ?
GenerateFood: 产生食物& r/ r9 f$ o9 F/ t
Lcd***** and Draw***: 绘制函数,结和具体的显示器件来学习。$ |! {8 f/ t( ~% E0 R! m
整体过程是 : 先对蛇进行移动,然后判断是否吃到食物,如果吃到了的话,就更新蛇的长度和更新食物。6 W! m  |% H4 _' B; z2 l

, l) d. a$ c0 Y2 l$ {$ b$ ] 519207ff4a524b20a4aa2bf389f6b0ad.png 0 B! y" P6 p5 l
3 r# f3 w! A) F  i4 r
三. 核心函数介绍
- Y, Y: Z  R& F/ i/ o6 t" A1. 初始化SnakeInit()函数
6 G6 X0 ?% p- `3 |该函数对蛇链表进行了初始化,链表长度为3,也就是蛇的初试长度为3,然后生成食物,也就是食物的位置,以及移动的方向。其他的一些可用可无。0 L. T% g& i# j$ y. [

7 c6 H( o% l8 K+ C3 a0 h 4a0e6fdac6524e46a45422dd22de1762.png   n5 ^0 I+ G  e6 i

3 @8 C2 \5 F+ V0 y2. 移动判断JudgeCrossDeal()和Move(uint16 headX , uint16 headY)函数
: y7 y" ~/ n! R; J. v) KJudgeCrossDeal()函数主要是对蛇穿墙的判断,如果蛇头要穿墙的话,就设置对应的坐标,不是的话,就蛇头的坐标就对应的加或减一,然后调用Move函数,将上一节蛇身的坐标赋值给下一节蛇身的位置,这样就可以达到蛇移动的目标了。7 T6 {! _2 U; k# P( x- Y6 u3 g
7 D, a1 ^  S, p
81b3d9a2038a4162b691b3011edae25d.png 8 `5 v* l, e! \

; {3 O7 l) f! v0 O2 `* g0 c3. 销毁SnakeDestory()函数
- F( P  b, t4 C4 ]& D8 j使用链表还要注意一个问题哦,在退出游戏之后,需要对分配的内存进行收回,这一点不要忘记(虽然不销毁的话也没啥,但是在一个项目里面最好还是要的)。4 X+ R+ t: l# U6 K8 H
+ v3 L3 M  x6 x  w: T
fd7f2f1105db4bdf987a118d43562c3b.png 7 E0 j/ y" _( Z/ ^0 M0 `5 l8 v

4 ]. ^3 L  p" r9 j( v核心函数就介绍这么多喽,需要的可以下载文件学习。
& \/ W9 S6 e- D" I: `% V; H( }4 X8 A( k
四. 完结

7 [! N+ ^- Q6 P通过两个定时器最终完成贪吃蛇游戏,一个用来检测按键输入,控制蛇的方向,另外一个用来产生1s的时间,移动蛇(我这里使用的TIM3和TIM4)。
; ^7 K3 C) ~! L$ I0 \8 P8 c  d! w9 S

: S9 U' I% u5 j6 Y2 L+ i8 s7 {( ?' M
赞 收藏 评论0 发布时间:2022-8-21 18:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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