×

Arduino的恐龙游戏

消耗积分:0 | 格式:zip | 大小:0.11 MB | 2022-11-11

张红

分享资料个

描述

恐龙游戏 Arduino 版

介绍

我一直喜欢可穿戴电子产品,几个月前我有一个便宜的 TFT 显示器可以玩,最终目标是熟悉所有电子产品,以便我可以尝试缩小所有东西并制作一个(希望是便携的) ) 智能手表。

我偶然发现了mrt-prodz为 arduino 开发的 flappy bird 游戏,当时我正在寻找一些带有 TFT 显示屏的好项目,在玩了几次游戏之后,我决定用 chromium 构建我自己的经典“恐龙游戏”版本.

该项目的所有代码文件和资产都可以在以下存储库中找到:

示意图

我得到的 TFT 显示器基于 ST7735 驱动 IC,同时它还有一个 SD 卡插槽,由于我手头没有 SD 卡,我最终将所有需要的数据保存在闪存中。TFT 的接线有点痛苦,但多亏了Tweaking4all的帮助,我终于让它运行起来了。

蜂鸣器和按钮的其他连接非常简单,无需解释。我确实注意到,flappy bird 游戏实际上并没有使用基于中断的触发器,而是具有正常的 digitalRead 功能。我决定使用内部拉动和外部中断触发的 ISR 通过数字引脚 2 为用户输入提供服务。

 

poYBAGNtnBmAWDauAADTU7TFgQ4092.png
 

 

显示器使用 SPI 通信,所以我最终使用 ardunio uno 的 SPI 硬件引脚与显示器通信。Tinkercad 没有 TFT 显示器的模型,所以我只是标记了连接并将它们放到面包板上。

我的最终设置是将所有东西都塞进了一个小面包板,因为我没有比这更大的东西了。

pYYBAGNtnByAfyVGAAFy3D-8OH0646.png
 

我的 TFT 显示器的另一个视图供任何人参考

软件

软件堆栈可以分解为以下子任务

做一个会跳的盒子

这一步应该相当简单,人们实际上使用欧拉积分方法给物体一些力(加速度),然后使用非常小的 dt 数值计算速度和位移。

加速度 = 力 / 质量Delta_{位置} = 速度 * dt Delta_{速度} = 加速度 * dt

由于某种原因,我最终使用了弹丸在恒定加速度下的运动方程。

y = ut + (1/2)at^2

每次按下按钮时,盒子的初始速度都是 $30 m/s$,我使用重力加速度值和初始速度来获得正确的跳跃响应。

事情最终看起来像这样(PS:不要介意背景中移动的仙人掌)
 

画仙人掌,让它四处走动

我使用了一些基本的形状(圆角矩形)来制作一个仙人掌状的物体,并在 -ve x 方向上给它一个恒定的速度,让它看起来像恐龙在向前移动。

我使用了mrt-prodz帖子中讨论过的画笔方法来制作动画,这基本上意味着我通过在旧像素上绘制背景颜色来擦除它们,然后在新像素上绘制所需的颜色,因此我不得不更改一些每帧中的选定像素,而不是整个 128x160 像素。

用恐龙替换盒子

接下来我尝试用恐龙(位图)替换盒子,看起来恐龙在地板上滑行,而且非常人工。

 

我决定让恐龙行走,就像原来的游戏一样,在从精灵表中剪下两个行走的帧之后,我尝试了一个简单的代码,在这些帧之间切换,让它看起来像恐龙在行走。

步行与滑冰恐龙

上述方法取得了部分成功,因为由于更新速度,整个恐龙图像现在有一个奇怪的闪烁,我意识到我正在更新整个恐龙位图,但大部分身体是静止的,只有腿应该移动。

 

我最终通过将 2 个恐龙框架分成 2 个部分(总共 4 个)来解决这个问题,其中每个框架的顶部是身体,底部是腿,幸运的是动画的设置方式是恐龙的身体实际上在两帧之间从未改变,只有腿的位置发生了变化,所以我固定了身体,只更新了恐龙的腿部,这消除了大部分或全部的闪烁,最后我得到了一个非常流畅的动画。

 

添加云、声音、乐谱和其他小细节

我现在添加了其他小细节,如声音、介绍和游戏帧。我还添加了分数显示和其他功能。我想为游戏提供一个像原版一样多云的背景,因为它不仅有助于美感,而且还可以显示恐龙一直相对于背景移动。

我厌倦了使用位图中的云,但是云中的闪烁有点太多,而且它们的功能太小以至于我几乎不关心,所以我最终用常规的圆角矩形替换了位图,这大大提高了游戏性能。

 

结果

在修复了几个错误之后,我终于有了一个可以工作的恐龙游戏

 

未来升级

虽然我没有立即的改进计划,但我确实有一些我想实现的功能。

  • 添加生命
  • 迪诺有力量(喷火)
  • 新障碍(鸟类?)
  • 消除由于跳跃引起的闪烁

本文由作者根据CC BY 4.0许可


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !