一. 前言

最近在弄一个桌面小摆件的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)。

STM32贪吃蛇实现相关推荐

  1. STM32贪吃蛇(流畅,高移植性)

    目录 一.一些前言: 二.完整代码 2.2.snake.c 2.3.中断处理 2.4.startup 三.后言 一.一些前言: 自己用2.4寸TFTSPI的屏写了个贪吃蛇,蛇行走画面流畅,不会有一顿一 ...

  2. stm32贪吃蛇代码c语言,STM32实现贪吃蛇

    本帖最后由 akwkevin2011 于 2012-7-14 14:47 编辑 STM32学习笔记二   竹天笑 呵呵,界面非常简单 要点:1.触摸屏校准信息保存在SD卡,不必每次开机都校准.(读写S ...

  3. stm32贪吃蛇tftlcd显示实验

    最近又在学习LCD,以前也看过一点LCD,但看lcd.c源文件2000多行,说来也惭愧,当时就放弃了,就想先学其他的吧,但是后来发现不学不行呀,LCD太重要了,LCD是输出设配,好多实验都是要显示出来 ...

  4. STM32之贪吃蛇游戏

    STM32之贪吃蛇游戏 1.硬件平台 STM32开发板 0.96寸OLED屏(SPI接口) 2.示例效果 基于STM32贪吃蛇游戏 3.软件设计  3.1 OLED画点函数 static u8 ole ...

  5. STM32借助A*算法完成贪吃蛇

    一. 简介 借助在前面stm32完成的贪吃蛇小游戏,现在借助A算法,来完成贪吃蛇的一个自动寻找食物的过程,从而解放我们的双手.终于从完成功能代码,到了算法的部分啦.经过这里例子,可以很好的感受将我们学 ...

  6. 基于stm32、0.96寸OLED实现的贪吃蛇小游戏(详细源码注释)

    简介:本实验基于stm32最小系统.0.96寸OLED(68*128)和摇杆实现一个经典的贪吃蛇小游戏.项目源码地址:点击下载. 硬件设计: 普通摇杆,0.96寸OLED 单色屏幕(SPI协议通讯), ...

  7. STM32+LCD实现简单的贪吃蛇小游戏

    寒假放假回家,只能宅在家里,无聊之余,幸好带了一块开发板回来,以前做项目都是在网上找相似或者有关联的项目,把别人的代码拿过来,修改修改,拼拼凑凑出自己项目,既然无聊就自己动脑筋思考,自己动手写贪吃蛇的 ...

  8. 【STM32单片机】贪吃蛇游戏设计

    文章目录 一.主要功能 二.硬件资源 1.硬件准备 2.硬件连接 四.软件设计 1.软件结构 2.主要代码 五.实验现象 联系作者 一.主要功能 系统运行后,TFTLCD触摸屏显示游戏界面,通过按键任 ...

  9. 基于STM32的贪吃蛇小游戏

    基于STM32的贪吃蛇小游戏 初学32一个月,学的并不多,便想着做一个贪吃蛇小游戏,因为有51单片机做贪吃蛇的经验,所以实现出来并不困难. 作品简介 游戏面版将在4.3寸480*800)液晶上显示,初 ...

最新文章

  1. 分库分表之后,主键的处理方法
  2. 超详细的 Bert 文本分类源码解读 | 附源码
  3. 深度学习笔记 第四门课 卷积神经网络 第二周 深度卷积网络:实例探究
  4. 安卓手机的加密设备和加密外置SD卡
  5. [uoj24]缩紧优化
  6. 电信运营商占IDC市场65%:中国电信占行业半数以上
  7. 【POJ - 1661】Help Jimmy(记忆化搜索,dp)
  8. [ARM] [基础][编译]ARM的浮点功能历史分类和对应的编译选项
  9. 从项目的 GitHub 星星数看2018年 JavaScript 生态圈
  10. Evolution Game DP
  11. 数字签名和数字证书 流程图 (一目了然)
  12. 解决 vim 中文编码问题
  13. java毕业设计古典舞在线交流平台mybatis+源码+调试部署+系统+数据库+lw
  14. ppt设置外观样式_ppt设置图片样式_PPT如何快速修改图像样式图文教
  15. hibernate二级缓存作用、配置
  16. Hadoop的详细配置(持续更新)
  17. uni-app 生成安卓证书
  18. 怎么批量删除 Excel 中第一个工作表或者其它指定的工作表?
  19. 2020年陕西省高等职业院校技能大赛信息安全管理与评估赛项竞赛手册
  20. Windows XP SP3 笔记本专用版 电脑疯子 2010年巨献

热门文章

  1. 程序员从初级到中级10个秘诀
  2. 基于KCOM3模块编写脚本控制电脑键盘鼠标,附控制软件
  3. 基于控制的角度无人机集群——避障(有源代码)
  4. Glide加载图片模糊问题
  5. [Unity存档系统]简单介绍Unity常见存档系统二JSON以及使用方法
  6. 天梯赛L1(1-80)
  7. [机器学习与scikit-learn-38]:算法-分类-支持向量机-通过等高线可视化决策边界线和隔离带
  8. 小米air2se耳机只有一边有声音怎么办_校园场景实测,JEET ONE与小米Air 2se蓝牙耳机哪款更好用?...
  9. 【GNN报告】腾讯AI lab 徐挺洋:图生成模型及其在分子生成中的应用
  10. Linux下编译pjproject-2.6并运行例程simple_pjsua