-4

我想知道在这种情况下如何使用 ArrayList/Array:

假设我想做一个吃豆人游戏,我希望有 250 个幽灵。我如何存储它们的位置而不是自己写它们(int ghost1x、int ghost1Y、int ghost2x、int ghost2y 等)?

也请给我一些例子!:)

我使用java

4

3 回答 3

3

让 ghost 类持有 x 和 y 位置,然后让 ArrayList 持有 gost 类的对象并将所有 ghost 存储在其中。

然后你循环遍历幽灵的 ArrayList,每次游戏都用 foreach 或类似的东西更新,并执行位置更新。

我相信这是一个相当正常的解决方案

private class Ghost{
public Ghost(int x, int y);//ctor
int x, y;
//other ghost code
}
private ArrayList<Ghost> ghosts = new ArrayList<Ghost>();
for(int i = 0; i < 250; i++)
{
ghosts.add(new Ghost(startX, startY));
}

//in the gameloop:
foreach(Ghost ghost in ghosts)
{
ghost.updatePositionOrSomething();
ghost.drawOrSomething();
}

那将是代码的一些想法,我有一段时间没有编写 java,所以语法上不是 100% 稳定的。

于 2012-09-09T15:13:06.503 回答
2

我不是游戏开发者,但我想到的是创建一个 Ghost 对象,其中包含两个 int 变量来表示它的 x/y 坐标。

然后创建一个幽灵数组,并在游戏中根据需要进行更新。

这有帮助吗?

//Create Ghost array
private Ghost[] ghosts = new Ghost[250]

//Fill ghost array
for (int i = 0; i < 250; i ++)
{
   Ghost g = new Ghost();
   g.xCoor = 0;
   g.yCoor = 0;

   ghosts[i] = g;
}

//Update coordinates while program running
while(programRunning == true)
{
   for (int i = 0; i < 250; i ++)
   {
      ghosts[i].xCoor = newXCoor;
      ghosts[i].yCoor = newYCoor;
   }
}

//Make Ghost class
public class Ghost 
{  
   public int xCoor {get; set;}
   public int yCoor {get; set;}
}
于 2012-09-09T15:08:55.787 回答
0

我建议您更深入地了解面向对象的设计。

您应该创建一个 Ghost 类:

public class Ghost {

int x;
int y;

public void update() {

}

public void render() {

}

}

现在您可以创建一个 Ghost 对象数组(如果 Ghost 对象的数量不同,您应该只创建一个 List<>)。

Ghost[] ghosts = new Ghost[250];

现在初始化 Ghosts 数组:

for(int i = 0; i < ghosts.length(); i++) {
ghosts[i] = new Ghost();
}

我将由您决定如何初始化xy坐标。

我希望这有帮助。

于 2012-09-09T15:18:29.553 回答