2011-01-23 63 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]或更高數目的這樣,它使得通過數學運動加快速度(你還必須調整頭部的大小以便更快速地運動)