我两天前收到了TI-82 STATS可编程计算器(实际上更像是TI-83) - 并希望使用内置的TI-BASIC语言编写Snake游戏。
虽然我必须知道:TI-BASIC 非常慢。我的第一次实施是如此缓慢,甚至对玩家来说都不是一个挑战!对我来说,主要的瓶颈在于管理包含蛇体坐标的列表(数组)。
我尝试了两件事:
myList[ N ]
设置为myList[ N - 1 ]
,以使蛇看起来像是在移动。但是,在列表长达4个部分之后,这将无法播放。 (太慢了)
这样做效果更好,但随着时间的推移也会变得太慢。
TL; DR /实际问题:
答案 0 :(得分:3)
使用circular buffer。详细说明:
获得一个足够大的阵列来容纳最大的蛇。建立两个指针,一个用于头部,一个用于尾部。
开始时,尾部将位于单元格#1中,单元格位于单元格#3中。当蛇移动时,将头指针移动到右侧并写入新坐标。然后,如果没有食用,也可以将尾指针移到右边。如果其中一个指针试图超出数组的最右端,请将它们包装到开头。
答案 1 :(得分:1)
最有可能发挥作用的技巧是代替[N-1]做[N-2]或更高的数字,这样通过数学上更快的速度来弥补时间(你还需要调整头部的大小)走得更快
答案 2 :(得分:0)
使用列表提高速度时的一个简单技巧是充分利用LIST
菜单下提供的功能。特别是,与实现相同目标的for循环相比,seq
可以提供显着的性能优势。我认为有用的其他功能是cumSum
和ΔList
。