我想創建一個蛇遊戲,其中的蛇的運動不是基於網格但自由形式,我有麻煩找出如何獲得尾部段跟着頭。蛇遊戲以下部分(非基於網格)
最簡單的解決方案是從尾部循環到頭部,並將當前位置設置爲下一個段的位置,即:segment[i].position = segment[i - 1].position
。這工作很好,但我最終只有一個像素聚集在一起的所有部分(或如此)。這不是很有吸引力。
爲了努力克服這一點,我創建了最後15個位置的數組,並將最新的位置推到最後。然後每一幀我彈出數組中的第一個元素並使用它,給出了該段在15幀前的位置的一個snapshot
。這種方式非常完美,但是通過不斷調用new()
並對數組進行混洗,表現真的很糟糕。閃存垃圾收集器給了我地獄。
任何人都可以想到其他解決方案?
我正在研究Flash,但我不認爲解決方案真的基於任何語言。
謝謝!
我認爲他只需要一個隊列而不是一個雙向隊列,因爲他只需要添加到一端並從另一端刪除。環形緩衝區的實現聽起來像是如果「將數組混在一起」真的是瓶頸的話。 – 2010-12-05 05:04:30
@Laurence:我發現deque的實現往往比隊列實現更優化,因爲後者的很多依賴於數組混排。 – 2010-12-05 05:07:40