建立网格"糖果粉碎 - 像" libGDX中的游戏

时间:2015-07-08 16:56:01

标签: java arrays libgdx swap

我正在使用libGDX开始创建用于Android,类似糖果的游戏的原型。这是我第一次使用这个游戏库,所以如果有人能指出我创建网格的有效方法,我会感激不尽。 Currentlu我这样做:我有2d数组Ball [] []和2d数组Vector2 [] []。在网格构造函数中,我计算每个槽的坐标,并且当我填充网格时,我从池中获取Ball并分配apropiet网格坐标(Vector2 [row] [column],Ball [row] [column])。每个球都会记住自己的行和列,当我换掉糖果时,当MoveToAction完成时,我会将球交换成阵列并从新位置为它们分配新的坐标。
  但我现在确定这是不是最好的主意。我正在考虑创建一个带有值对的2d数组,并在交换期间将球重新分配给他们的新对。它看起来更干净,但自从网格它是游戏中非常重要的一部分,我想知道最好的方式吗?其他人如何解决交换问题?两种解决方案的优缺点是什么?

1 个答案:

答案 0 :(得分:1)

您似乎对数据结构不够慷慨。你有Ball对象,它拥有Ball对象本身独有的每个属性,然后你有一个数组来保存那些很棒的球。但是你有一个阵列来保存每个球的位置,那就是你的问题。

如果你想一想你的方式,球阵列将球保持在指定的行和列,然后在网格数组中保持球应该设置的位置。这非常令人困惑,可以通过更多地使用对象来更轻松地完成。

假设我们创建了一个表示网格上一个插槽的GridSlot类。我们可以删除Ball和Vector2数组而忘记它们。相反,我们将创建一个GridSlot []类型的数组,它将保存数组中的每个插槽(请记住它是一维数组)。在GridSlot类中,我们可以创建两个变量x和y,它们代表槽的位置,我们可以创建另一个变量ball,它代表槽中的Ball。现在,在初始化所有内容时,当您正常加载带位置的vector2数组时,我们可以改为创建一个新的GridSlot对象并将该位置设置为该对象。我们将对网格中的每个插槽执行此操作,然后当我们想要将球移动到插槽时,您只需在GridSlot对象中设置ball变量。