-4

この状況で ArrayList/Array を使用する方法を知りたい:

パックマン ゲームを作りたいとしましょう。250 体のゴーストが必要です。それらをすべて自分で書き込む代わりに、それらの位置を保存するにはどうすればよいですか?

また、いくつかの例を教えてください!:)

私はJavaを使用しています

4

3 に答える 3

3

ゴースト クラスに x と y の位置を保持させ、ArrayList に gost クラスのオブジェクトを保持させ、すべてのゴーストを格納します。

次に、ゴーストの 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

私はゲーム開発者ではありませんが、頭に浮かぶのは、x/y 座標を表す 2 つの int 変数を含む Ghost オブジェクトを作成することです。

次に、一連のゴーストを作成し、ゲーム内で必要に応じて更新します。

それは役に立ちますか?

//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];

Ghost の配列を初期化します。

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

xy座標をどのように初期化するかは、あなたに任せます。

これが役立つことを願っています。

于 2012-09-09T15:18:29.553 に答える