首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蛇式游戏的极简方法

蛇式游戏的极简方法
EN

Stack Overflow用户
提问于 2011-01-23 01:18:16
回答 3查看 645关注 0票数 5

大约两天前,我收到了我的TI-82 STATS可编程计算器(实际上是一台TI-83),我想用内置的TI-BASIC语言编写一个蛇游戏。

尽管我不得不发现: TI-BASIC是非常慢。我的第一次实现是如此缓慢,这甚至不是一个挑战的球员!对我来说,主要的瓶颈在于管理包含蛇体坐标的列表(数组)。

我试过两件事:

  • 当蛇移动时,更新头部位置,然后从尾部位置循环遍历数组,并将myList[ N ]设置为myList[ N - 1 ],以使蛇看起来正在移动。

然而,在列表长了大约4个部分之后,就变得不可播放了。(太慢)

  • 然后,我尝试使用TI-BASIC的列表操作特性实现某种类型的queue/deque,比如从末尾弹出并在数组前面添加一些内容。

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

TL;DR /实际问题:

  • ,你知道一个技巧吗,这样游戏就不会随着蛇变长而变慢了?,我看到这在其他TI-BASIC游戏中是有可能的。
EN

回答 3

Stack Overflow用户

发布于 2012-01-19 17:29:02

使用循环缓冲器。详细说明:

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

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

票数 3
EN

Stack Overflow用户

发布于 2015-06-08 20:40:32

一个最有可能奏效的诀窍是用数学上更快的移动来代替N-1做N-2或更高的数字来弥补时间(你还必须调整头部的大小才能走得更快。)

票数 1
EN

Stack Overflow用户

发布于 2015-01-18 15:50:50

在使用列表以提高速度时,一个简单的技巧是充分利用LIST菜单中提供的功能。特别是,seq可以通过实现相同目标的for循环提供显著的性能好处。我认为有用的其他函数是cumSumΔList

  • http://tibasicdev.wikidot.com/cumsum
  • http://tibasicdev.wikidot.com/deltalist
  • http://tibasicdev.wikidot.com/seq-list
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4771717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档