STM32贪吃蛇实现

简介: 笔记

一. 前言


最近在弄一个桌面小摆件的DIY,在里面弄了一个贪吃蛇的小游戏,在stm32f103平台上实现,通过tft模块进行显示。不加显示部分的话,贪吃蛇游戏与平台无关,可以轻松添加到自己其他平台项目的代码中,也是便于学习,其中蛇数据的存储使用到了链表结构,下面来让我其做一个简单的介绍吧。

C代码可以关注微信公众号 FPGA之旅 回复 stm32贪吃蛇获取(不是工程文件,需要自己根据贪吃蛇的数据进行绘制显示)


链接:

演示视频


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


二. 游戏整体介绍


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


JudgeCrossDeal : 通过方向来移动蛇的移动

EatFoodOrNot : 判断是否吃到食物

Eated : 吃到食物更新蛇的长度

GenerateFood: 产生食物

Lcd***** and Draw***: 绘制函数,结和具体的显示器件来学习。

整体过程是 : 先对蛇进行移动,然后判断是否吃到食物,如果吃到了的话,就更新蛇的长度和更新食物。

41.png

三. 核心函数介绍


1. 初始化SnakeInit()函数

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

42.png

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

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


43.png

3. 销毁SnakeDestory()函数

使用链表还要注意一个问题哦,在退出游戏之后,需要对分配的内存进行收回,这一点不要忘记(虽然不销毁的话也没啥,但是在一个项目里面最好还是要的)。

44.png


核心函数就介绍这么多喽,需要的可以下载文件学习。


四. 完结


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

公众号:FPGA之旅



目录
相关文章
|
算法 搜索推荐 异构计算
|
5月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
447 2
|
4月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
716 0
|
6月前
|
传感器
STM32标准库ADC和DMA知识点总结-1
STM32标准库ADC和DMA知识点总结
|
5月前
|
IDE 开发工具
使用STM32F103标准库实现自定义键盘
通过本文,我们学习了如何使用STM32F103标准库实现一个简单的自定义键盘。我们首先初始化了GPIO引脚,然后实现了一个扫描函数来检测按键状态。这个项目不仅能够帮助我们理解STM32的GPIO配置和按键扫描原理,还可以作为进一步学习中断处理和低功耗设计的基础。希望本文对你有所帮助,祝你在嵌入式开发的道路上不断进步!
510 4
|
5月前
|
传感器
【经典案例】STM32F407使用HAL库配置I2C详解
STM32F407是一个强大的微控制器,广泛应用于嵌入式系统中。在许多应用中,我们需要使用I2C总线来与传感器、EEPROM、显示屏等外设进行通信。本文将详细介绍如何使用STM32 HAL库来配置和使用I2C接口。
701 2
|
5月前
|
存储 数据采集 数据安全/隐私保护
使用STM32F103读取TF卡并模拟U盘:使用标准库实现
通过以上步骤,你可以实现用STM32F103将TF卡内容变成U盘进行读取。这种功能在数据采集、便携式存储设备等应用中非常有用。如果你有更多的需求,可以进一步扩展此项目,例如添加文件管理功能、加密存储等。希望这篇博客能帮到你,如果有任何问题,欢迎在评论区留言讨论!
238 1
|
5月前
|
开发者
【经典案例】使用HAL库配置STM32F407的SPI外设
在嵌入式系统开发中,STM32F407是一款广泛应用的微控制器,而SPI(Serial Peripheral Interface)是一种常用的通信接口。本文将详细介绍如何使用STM32的硬件抽象层(HAL)库配置STM32F407的SPI外设,并提供完整的代码示例。
572 1
|
4月前
|
传感器 编解码 API
【STM32开发入门】温湿度监测系统实战:SPI LCD显示、HAL库应用、GPIO配置、UART中断接收、ADC采集与串口通信全解析
SPI(Serial Peripheral Interface)是一种同步串行通信接口,常用于微控制器与外围设备间的数据传输。SPI LCD是指使用SPI接口与微控制器通信的液晶显示屏。这类LCD通常具有较少的引脚(通常4个:MISO、MOSI、SCK和SS),因此在引脚资源有限的系统中非常有用。通过SPI协议,微控制器可以向LCD发送命令和数据,控制显示内容和模式。
164 0