2016-03-22 20 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

相关问题