STM32贪吃蛇实现

一. 前言

最近在弄一个桌面小摆件的DIY,在里面弄了一个贪吃蛇的小游戏,在stm32f103平台上实现,通过tft模块进行显示。不加显示部分的话,贪吃蛇游戏与平台无关,可以轻松添加到自己其他平台项目的代码中,也是便于学习,其中蛇数据的存储使用到了链表结构,下面来让我其做一个简单的介绍吧。
C代码可以关注微信公众号 FPGA之旅 回复 stm32贪吃蛇获取(不是工程文件,需要自己根据贪吃蛇的数据进行绘制显示)

链接:
演示视频

后面等整个DIY项目完成后,会开源出整个项目,欢迎关注公众号获取最新动态


二. 游戏整体介绍

先来看看下图,如果蛇移动的速度为1s的话,就每隔1s调用一下这个函数即可(先要初始化一下蛇的长度和食物的位置以及移动方向),非常方便。

  • JudgeCrossDeal : 通过方向来移动蛇的移动
  • EatFoodOrNot : 判断是否吃到食物
  • Eated : 吃到食物更新蛇的长度
  • GenerateFood: 产生食物
  • Lcd***** and Draw***: 绘制函数,结和具体的显示器件来学习。

整体过程是 : 先对蛇进行移动,然后判断是否吃到食物,如果吃到了的话,就更新蛇的长度和更新食物。
在这里插入图片描述


三. 核心函数介绍

1. 初始化SnakeInit()函数

该函数对蛇链表进行了初始化,链表长度为3,也就是蛇的初试长度为3,然后生成食物,也就是食物的位置,以及移动的方向。其他的一些可用可无
在这里插入图片描述

2. 移动判断JudgeCrossDeal()和Move(uint16 headX , uint16 headY)函数

JudgeCrossDeal()函数主要是对蛇穿墙的判断,如果蛇头要穿墙的话,就设置对应的坐标,不是的话,就蛇头的坐标就对应的加或减一,然后调用Move函数,将上一节蛇身的坐标赋值给下一节蛇身的位置,这样就可以达到蛇移动的目标了。
在这里插入图片描述

3. 销毁SnakeDestory()函数

使用链表还要注意一个问题哦,在退出游戏之后,需要对分配的内存进行收回,这一点不要忘记(虽然不销毁的话也没啥,但是在一个项目里面最好还是要的)。
在这里插入图片描述
核心函数就介绍这么多喽,需要的可以下载文件学习。


四. 完结

通过两个定时器最终完成贪吃蛇游戏,一个用来检测按键输入,控制蛇的方向,另外一个用来产生1s的时间,移动蛇(我这里使用的TIM3和TIM4)。

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值