有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在libGDX中为“糖果粉碎”游戏构建java网格

我正在启动安卓的creting原型,这是一款类似糖果粉碎的游戏,使用libGDX。这是我第一次使用这个游戏库,所以如果有人能告诉我创建网格的有效方法,我将不胜感激。我是这样做的:我有2d数组球[]和2d数组向量2[]。在网格构造器中,我计算每个插槽的坐标,然后,当我填充网格时,我从池中获取球并分配一个旋转网格坐标(向量2[row][column],Ball[row][column])。每个球都记得自己的行和列,当我交换糖果时,当MoveToAction完成时,我交换数组中的球,并从新位置为它们分配新的坐标
但我现在确定这是不是最好的主意。我在考虑用值对创建一个2d数组,并在交换期间将球重新分配给它们的新对。它看起来更干净,但既然它是游戏中极其重要的一部分,我想知道用这种方式是最好的吗?其他人是如何解决交换问题的?两种解决方案的优缺点是什么


共 (1) 个答案

  1. # 1 楼答案

    似乎您对数据结构不够慷慨。你有一个Ball对象,它保存了Ball对象本身特有的所有属性,然后你有一个数组来保存这些球,这很好。但是,你有一个数组,它保持每个球的位置,这就是你的问题

    如果您考虑您的操作方式,则球数组将球固定在指定的行和列,然后在栅格数组中,您将固定球应设置的位置。这是非常令人困惑的,如果更多地使用对象,可以更容易地做到这一点

    假设我们创建了一个类GridSlot,它表示网格上的一个插槽。我们可以放下球和矢量2阵列,然后忘掉它们。相反,我们将创建一个GridSlot[]类型的数组,该数组将保存数组中的每个插槽(请记住,它是一个一维数组)。在GridSlot类中,我们可以创建两个变量x和y,它们表示插槽的位置,我们可以创建另一个变量ball,它表示插槽中的球。现在,当初始化所有内容时,当您通常使用位置加载vector2数组时,我们可以创建一个新的GridSlot对象,并将正确的位置设置为该对象。我们将对网格中的每个插槽执行此操作,然后当我们要将球移动到插槽时,您所要做的就是在GridSlot对象中设置ball变量