TnTank:我如何使用ArduEngine创建游戏

在本文中,我将演示如何使用ArduEngine框架创建游戏。 如果您想进一步了解ArduEngine,可以参考以下文章:ArduEngine:在Arduboy上创建游戏的简单框架

因此,TnTank是一款街机游戏-益智记忆游戏,您需要控制坦克,并且必须避开所有TNT并安全地达到目标。 在最初的几秒钟内可以看到所有的TNT,然后消失。

首先,通过运行以下命令创建一个新的ArduEngine项目:

./ArduEngine.sh TNTANK 

在ArduEngine上创建新项目后,将为我提供初始项目。

这篇文章将主要解释TnTank场景中的内容。

在这个游戏中,我使用5个ArduScenes:

  1. 开机画面场景
  2. 主菜单场景
  3. 游戏场景
  4. 胜景
  5. 游戏结束现场

我将一一介绍这些场景。 至于Win Scene和Game Over Scene,它们将被合并为一个部分,因为其中两个是相似的。 好吧,让我们从第一个场景开始。

该场景的目的是向玩家展示该游戏是使用ArduEngine制作的,并向游戏的开发者Grim Pros展示。

在此场景中,我使用arduboy对象将精灵直接绘制到屏幕上,而不是使用ArduSprite来做到这一点。 原因是因为我要绘制的精灵是静态精灵。 由于它不会移动,因此我们不必跟踪其位置。 因此,我们不需要使用ArduSprite。

如您所见,我依次绘制了精灵,即,将ArduEngine徽标绘制为125帧,然后将其涂黑25帧(150–125),然后显示Grim Pros徽标为150帧(300–150) )。

“您是怎么知道这个数字的? “

don,您可以根据需要进行更改。

当我完成最后一个精灵后,我们转到第二个场景,主菜单场景。

该场景基本上只是一个简单的Press A to Play类型的场景。 它仅显示静态背景主菜单精灵,以及闪烁的文字,显示Press A

在此场景中,我使用ArduSprite来显示背景精灵的静态图像。

“但是您之前说过,如果它是静态图像,则将使用…”。

好的,我知道这并不一致,但是我只想向您展示如何在最简单的情况下使用ArduSprite。

对于文本,我使用基本的arduboy文本来打印字符串。 每隔40帧,如果禁用了文本,我就会启用该文本​​,反之亦然,以使文本闪烁。 您可以在这部分代码中检查我的操作方式。

按下A键后,我们将进入游戏场景。

我还使用ArduSprite绘制坦克精灵,并设置其位置与Tank对象匹配。

要记住的一件事是,当禁用ArduObjects时,还必须禁用其中的所有ArduObjects。

使用ArduText倒计时

如前所述,您将有几秒钟的时间来查看TNT的位置,然后它们将消失。 为了说明TNT消失之前还有多少时间,我使用文字倒计时。


在这个场景中,我使用基本的arduboy对象绘制游戏的模板,网格边框和TNT。

因此,在您赢得或输掉游戏后,您将被带到输赢场景。


综上所述,这就是游戏场景的全部流程:

一些注意

在此游戏中,当对象处于“加载”或“破坏”场景时,我将其禁用并启用。 这意味着游戏对象仍在ArduEngine上,但是由于我们禁用了该对象,因此不会对其进行更新。

从理论上讲,如果当前场景中不再需要所有游戏对象,最好将其从ArduEngine中移除。 但是,很抱歉,我还没有测试有关从ArduEngine删除游戏对象的代码,因此使用后果自负。 我会通知您是否经过测试。


这就是ArduEngine帮助我创建TnTank的方式。 ArduEngine可以做很多改进:

  1. 在ArduEngine上添加输入处理程序
  2. 根据子对象的父对象自动更改位置。
  3. 添加Camera对象,因此在某些情况下可以跟随该对象
  4. 添加GUI / HUD对象,该对象将在摄像机移动时粘在屏幕上。
  5. 还有很多。

但是我可以看到,当前的ArduEngine版本足以像TnTank一样为Arduboy创建许多简单的游戏。

每次创建Arduboy游戏时,它将一遍又一遍地删除所有必须写的样板。

您可以在此处获取ArduEngine:ArduEngine

在此处获取TnTank的完整源代码:TNTANK

没有Arduboy? 在此处在线尝试游戏:Arduboy Emulator

玩得开心🙂