Arduino : 编写贪吃蛇小游戏 一

文章目录

  • 前言
    • 划分部分
  • 操作工具
  • 蛇的移动与碰撞
    • 将编 转换为坐标轴
    • 编写了一个 shake 类
      • 碰撞检测
      • 更新蛇位置
      • 扫描按键
      • 蛇运动方向判断
    • 定时前进
    • 显示蛇
  • 参考资料

前言

因为接触到了 bpibit 的 LED 矩阵,所以萌生了写出一个贪吃蛇小游戏

记录一下编写程序的过程以及思考,毕竟还是一只菜鸟,所以在程序逻辑、代码优化上还是有些不足,希望有大佬能够指出,我会认真学习大佬给的建议

这篇文章是以上一篇文章为基础写的,所以有兴趣可以看我上一篇文章ESP32: BPI-BIT 开发板外设 按键与LED矩阵 学习(Arduino)

划分部分

我把贪吃蛇小游戏分为几个部分

  1. 蛇的移动与碰撞
  2. 苹果的生成

操作工具

测试使用的开发板: bpi-bit v1.2

应用到的外设: WS2812b

测试使用的软件:PlatformIO

  • 不知怎么安装可看这篇文章
    Arduino : 下载安装 PlatformIO 并新建工程

蛇的移动与碰撞

将编 转换为坐标轴

因为在中,输入的是面板的整数,不利于后面蛇方向移动程序的编写,所以写了一个将(x,y)矩阵变为整数编 形式的函数

这样就把板子的 LED 面板变成了 XY 矩阵的形式,整个程序都是以 XY 矩阵为基础的

Arduino : 编写贪吃蛇小游戏 一

编写了一个 shake 类

碰撞检测

检测蛇头是否超出了 XY 矩阵的范围,若超出则说明碰撞到墙壁。检测蛇头是否与身体重叠,若重叠则说明自身碰撞。

更新蛇位置

当 appleFlag 为 true 时,说明蛇吃到了苹果,此时把原本消失尾部加到蛇的数组里面去。当 appleFlag 为 false 时,说明蛇在移动,此时把数组的标 减少一位,然后把蛇头的位置放在了最高位

扫描按键

判断是否有按 A/B 键。这里不支持连按

蛇运动方向判断

简单的运用 if…else… 语句来进行判断。通过当前的蛇头运动方向以及按键控制的方向,来判断下一步蛇头的运动方向

定时前进

利用 获取当前时间,再利用 来获取时间间隔;当满足时间间隔条件时,执行下面函数

每隔一段时间,判读蛇头的运动方向,变化蛇头的位置。为了实现移动效果,使蛇尾的位置消失,其实就是将蛇尾的位置变黑。然后再更新蛇的位置,把新的蛇尾放在了数组的最后。

显示蛇

利用循环在数组里提取蛇的位置,并显示出来

参考资料

指针和动态分配内存 (不定长度数组)——新标准c++程序设计

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年6月16日
下一篇 2019年6月16日

相关推荐