0

こんにちは、Java クラス用の Battleship プログラムを作成しています。現在、ショットを発射するクラスに取り組もうとしています。起動するには、背景色を青(空のセルであることを意味します)から黄色(そのセルで起動したが何もないことを示すため)に変更しようとしています。

これは Fire クラスのコードです。必要に応じて、継承元の他のクラスを含めることができます。私が問題を抱えている主なことは、「for」ループを通過させ、必要な反復回数だけ背景を青から黄色に実際に変更しようとすることです。100 はテスト用の任意の数値です。

public class Fire extends Ship{

    public Fire() throws InterruptedException{
        super.setShipV();
    }
    public void Shoot() throws InterruptedException {

        Random random= new Random();

        int a = random.nextInt(100);
        int b = random.nextInt(100);

        for (int i = 0; i< 100; i++){
           //for(int j = 0; j< 50; i++){
           grid[a][b].setBackground(Color.yellow);
        }
    }
}

ご協力いただきありがとうございます。

ハンナ

4

1 に答える 1

1

グリッドにアクセスするときは、イテレータ変数を使用する必要があります。

次のようなことを試してください:

for (int i = 0; i< 100; i++){
   for(int j = 0; j< 50; i++){
      grid[i][j].setBackground(Color.yellow);
}

または、100個のランダムフィールドを変更したい場合はrandom.nextInt、ループ内に配置して、各反復ab変更します(ランダム値は、前の反復と同じ値にヒットする可能性があります)

for (int i = 0; i< 100; i++){
   int a = random.nextInt(100);
   int b = random.nextInt(100);
   grid[a][b].setBackground(Color.yellow);
}

各反復で実行される唯一のコードは、{(after for(..)) との間のコード}です。これは、コード内aで とbが 1 回設定され、同じグリッド フィールドを 100 回黄色にマークしていることを意味します。このようにするab、反復ごとに新しい値が与えられます。

于 2013-04-09T13:25:58.047 に答える