2016-03-22 49 views
3

我正在Yoyo Game Maker中製作一款遊戲,其中有物品沿傳送帶移動。由於這些項目只向一個方向移動,我認爲使用隊列或類似隊列的數據結構來存儲項目是最有意義的。但是,爲了能夠渲染項目,我需要能夠在隊列中的任意位置讀取所有項目,而不僅僅是頭部或尾部。可從任何地方讀取的隊列式數據結構

 [[a] [b] [c] [d]] 
      | 
      V 

a <- [[ ] [b] [c] [d]] <- e 
      | 
      V 

    [[b] [c] [d] [e]] 
     | | | | 
     V V V V 

     b c d e 

我可以簡單地使用該手動移動其的所有值由前一個時隙動不動(使用for循環),但不知何故似乎效率低下,laggy,或者至少是,不良形式的陣列。無論如何,我的編程本能地反思了使用這種系統的想法。

這是一個正確的假設嗎?數組真的是實現像這樣的結構的最佳方式嗎?我甚至應該擔心效率問題,還是這種情況下的差異可以忽略不計?

一些建議或例子(任何編程語言)將不勝感激。

+5

https://en.wikipedia.org/wiki/Circular_buffer – jbapple

+0

@jbapple這將工作完美,謝謝。 – a52

回答

-2

我在遊戲製造商做過一個有類似要求的遊戲。如果你瞭解青蛙遊戲,它會在河上漂浮一些樹林。

運動:爲此,我創建了一些數字的木材物體,它們沿特定方向移動。當青蛙與他們中的任何一個碰撞時,他/她開始朝那個方向漂浮。另外,如果窗戶朝一個方向出去,我會把它放回窗戶的另一邊。

採摘:我認爲要拿起其中的一個項目,您需要在每個對象內部定義碰撞。碰撞後,你可以定義你的下一個步驟。

+5

我正在尋找一個數據結構,而不是一個基於對象的碰撞實現。我正在使用的對象不會也不會具有物理屬性。 – a52

+0

我不清楚你的拾取過程是如何工作的,但是如果你想從傳送帶上拾取一個物體,這種方法是可行的。 – denis

相關問題