我想知道在这种情况下如何使用 ArrayList/Array:
假设我想做一个吃豆人游戏,我希望有 250 个幽灵。我如何存储它们的位置而不是自己写它们(int ghost1x、int ghost1Y、int ghost2x、int ghost2y 等)?
也请给我一些例子!:)
我使用java
让 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% 稳定的。
我不是游戏开发者,但我想到的是创建一个 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;}
}
我建议您更深入地了解面向对象的设计。
您应该创建一个 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();
}
我将由您决定如何初始化x
和y
坐标。
我希望这有帮助。