Snake风格游戏的简约方法

时间:2011-01-23 01:18:16

标签: calculator texas-instruments ti-basic

我两天前收到了TI-82 STATS可编程计算器(实际上更像是TI-83) - 并希望使用内置的TI-BASIC语言编写Snake游戏。

虽然我必须知道:TI-BASIC 非常慢。我的第一次实施是如此缓慢,甚至对玩家来说都不是一个挑战!对我来说,主要的瓶颈在于管理包含蛇体坐标的列表(数组)。

我尝试了两件事:

  • 当蛇移动时,更新头部位置,然后从尾部位置环绕阵列,并将myList[ N ]设置为myList[ N - 1 ],以使蛇看起来像是在移动。

但是,在列表长达4个部分之后,这将无法播放。 (太慢了)

  • 然后,我尝试使用TI-BASIC的列表操作功能实现某种队列/双端队列,比如弹出结尾并在阵列的前面添加一些东西。

这样做效果更好,但随着时间的推移也会变得太慢。

TL; DR /实际问题:

  • 你知道一个技巧,所以游戏不会随着蛇越来越慢而慢下来吗?我已经看到这在TI-BASIC制作的其他游戏中是可行的

3 个答案:

答案 0 :(得分:3)

使用circular buffer。详细说明:

获得一个足够大的阵列来容纳最大的蛇。建立两个指针,一个用于头部,一个用于尾部。

开始时,尾部将位于单元格#1中,单元格位于单元格#3中。当蛇移动时,将头指针移动到右侧并写入新坐标。然后,如果没有食用,也可以将尾指针移到右边。如果其中一个指针试图超出数组的最右端,请将它们包装到开头。

答案 1 :(得分:1)

最有可能发挥作用的技巧是代替[N-1]做[N-2]或更高的数字,这样通过数学上更快的速度来弥补时间(你还需要调整头部的大小)走得更快

答案 2 :(得分:0)

使用列表提高速度时的一个简单技巧是充分利用LIST菜单下提供的功能。特别是,与实现相同目标的for循环相比,seq可以提供显着的性能优势。我认为有用的其他功能是cumSumΔList