2011-01-23 71 views
5

大约两天前,我收到了我的TI-82 STATS可编程计算器(实际上更多的是TI-83) - 并且想用TI-BASIC内置程序编写蛇游戏语言。蛇式游戏的简约方法

虽然我不得不找出:TI-BASIC是极其慢。我的第一个实现非常缓慢,对于玩家来说这甚至不是一个挑战!对我来说,主要瓶颈在于管理包含蛇体坐标的列表(数组)。

我曾尝试两件事情:

  • 当蛇移动时,更新头位置,然后依次通过从尾部位置的阵列,并且设置myList[ N ]myList[ N - 1 ],为了使蛇似乎是移动。

然而,这个列表在长度大约为4个部分后无法播放。 (太慢了)

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

这个工作好一点,但随着时间的推移也会变得太慢。

TL; DR /实际的问题:

  • 你知道一个把戏因此本场比赛并没有打倒蛇越来越长慢?我已经看到,在TI-BASIC制造的其他游戏中,这是可能的

回答

3

使用circular buffer。详细说明:

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

开始的时候,尾巴会在#1的单元格中,即单元格#3的头部。当蛇移动时,将头指针向右移动并写入新的坐标。然后,如果没有食物被吃掉,将尾指针也移动到右边。如果其中任何一个指针试图超出数组的最右端,则将它们包装到开头。

1

特技,最有可能将工作是代替[N - 1]做[N - 2]或更高数目的这样,它使得通过数学运动加快速度(你还必须调整头部的大小以便更快速地运动)