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(..)) 和}. 这意味着在您的代码ab设置一次,然后您将相同的网格字段标记为黄色一百次。如果你这样做,你会在每次迭代中给出一个新值ab

于 2013-04-09T13:25:58.047 回答