大约两天前,我收到了我的TI-82 STATS可编程计算器(实际上是一台TI-83),我想用内置的TI-BASIC语言编写一个蛇游戏。
尽管我不得不发现: TI-BASIC是,非常慢。我的第一次实现是如此缓慢,这甚至不是一个挑战的球员!对我来说,主要的瓶颈在于管理包含蛇体坐标的列表(数组)。
我试过两件事:
myList[ N ]设置为myList[ N - 1 ],以使蛇看起来正在移动。然而,在列表长了大约4个部分之后,就变得不可播放了。(太慢)
这样做的效果更好一些,但随着时间的推移也变得太慢了。
TL;DR /实际问题:
发布于 2012-01-19 17:29:02
使用循环缓冲器。详细说明:
得到一个阵列,足够大,足以容纳最大的蛇。建立两个指针,一个用于头部,一个用于尾巴。
开始时,尾巴在单元格#1中,头部在单元格#3中。当蛇移动时,将头部指针向右移动,并写入新的坐标。然后,如果没有食物吃,也把尾巴指针向右移动。如果其中任何一个指针试图超出数组的最右侧,请将它们包装到开头。
发布于 2015-06-08 20:40:32
一个最有可能奏效的诀窍是用数学上更快的移动来代替N-1做N-2或更高的数字来弥补时间(你还必须调整头部的大小才能走得更快。)
发布于 2015-01-18 15:50:50
在使用列表以提高速度时,一个简单的技巧是充分利用LIST菜单中提供的功能。特别是,seq可以通过实现相同目标的for循环提供显著的性能好处。我认为有用的其他函数是cumSum和ΔList。
https://stackoverflow.com/questions/4771717
复制相似问题