STM32
直播中

云达贞

7年用户 841经验值
私信 关注
[问答]

怎样去开发一种基于STM32的贪吃蛇小游戏

怎样去开发一种基于STM32的贪吃蛇小游戏?

回帖(1)

杨阳

2021-10-18 15:48:26
  基于STM32的贪吃蛇小游戏
  初学32一个月,学的并不多,便想着做一个贪吃蛇小游戏,因为有51单片机做贪吃蛇的经验,所以实现出来并不困难。
  作品简介
  游戏面版将在4.3寸480*800)液晶上显示,初始为一个长度为二的小蛇,通过吃果子慢慢变大,当长度到长度时,赢得游戏。碰壁及碰到自己都会死亡,结束游戏
  在游戏开始之前可以通过点击触摸屏中央的start字样开始游戏。游戏结束会出现胜利或死亡界面,并显示你的得分,死亡后点击again可再次游戏。
  控制模式是通过点击触摸屏上的上下左右来控制小蛇的方向。
  游戏过程中,可以看到屏幕右下的分数显示。还可以通过点击key0按键调节小蛇速度。
  元器件:
  1.STM32F1开发板;
  2.TFTLCD4.3寸电容触摸屏;
  软件:Keil uVision5
  设计思路:
  关于小蛇的移动与显示:可以事先设定一个变量snake_len用来存放小蛇的长度,在定义两个数组,分别用来存放小蛇的各点x,y坐标,定义一个变量存放小蛇的运动方向。
  每次小蛇的移动,通过运用定时器4来调节小蛇速度以及执行移动函数,移动函数的思想就是当每次要移动时都从蛇头坐标开始,依次赋予后面的坐标,然后蛇头坐标就按照小蛇的运动方向进行改变。
  每次运动都进行是否成长,是否死亡或胜利的判定。
  我将改变小蛇运动方向的方法就是点击触摸屏上的上下左右的图标,运用定时器3不停的判定是否点击触摸屏的某个位置。如果判断成功就会执行相应的动作。
  我加了一个游戏过程中改变小蛇的运动速度,我想到的是运用定时器5,不停的判定key0按键是否被按下,如果按下就加快或剪短移动函数执行时间的间隔。
  关于实时的分数显示,就是在每次成长函数触发后刷新,要先事先清除之前分数,避免数字重叠。
  总结:
  小蛇在吃完果子的移动的过程出现尾部闪烁,可以通过添加短时间的delay来消除,效果还不错。
  游戏结束后,我加了一个返回重新开始的功能,我用的goto语句,确实不是很方便,极其容易出错,当时没用想到可以再在外面嵌套一个循环。
  开始界面嫌麻烦,做的十分简陋,可以在加点东西。
  代码
  #include “led.h”
  #include “delay.h”
  #include “key.h”
  #include “sys.h”
  #include “lcd.h”
  #include “usart.h”
  #include “24cxx.h”
  #include “touch.h”
  不知道为什么粘贴不了,我把代码用压缩包发出来。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分