0

私は現在Javaの理解を始めています。そのため、掃海艇アプリケーションを開発しようとしているときに、"Mines[]" 配列に座標を追加しようとすると、デバッグ ウィンドウが開き、アプリケーションが目的の地雷原を表示し続けないことに気付きました。

それが私のコードです:

package com.ochs.minesweeper;

public class MineField {

public Mine[] mines;

public MineField(int xMines, int yMines) {
    mines = new Mine[xMines*yMines];
    int xCounter = 0;
    int yCounter = 0;
    for(int i = 0; i < yMines; i++) {
        for(int j = 0; j < xMines; j++) {
            mines[i*j].setX(xCounter);
            mines[i*j].setY(yCounter);
            xCounter += 100;
        }yCounter += 100;
    }
}   
}

次のようなことを試してみても:

for(int i = 0; i < xMines*yMines; i++) {
    mines[i].setX(2);
} 

または、配列内のforループの変数を使用して処理できないようです...

誰かが私が間違っていることを知っていますか? MineField に Mine[] 配列を持たせたいだけです。この地雷はすべて for ループで異なる座標で作成されるため、サーフェスビューのグリッドに表示できます。誰にもアイデアがありますか?または、私の例の鉱山で、オブジェクトの単純なグリッドを作成する方法の別の解決策はありますか?

前もって感謝します!

4

2 に答える 2

1

2次元配列を使用しないのはなぜですか? Mine[][] minesループ内で次のように定義できます。

 for(int i = 0; i < yMines; i++) {
        for(int j = 0; j < xMines; j++) {
            mines[i][j].setX(xCounter);
            mines[i][j].setY(yCounter);
            xCounter += 100;
        }yCounter += 100;
    }
于 2013-04-27T20:40:34.517 に答える