2013-04-09 140 views
0

嗨我正在为我的Java类创建一个Battleship程序。现在,我正在努力开发一个能够发射镜头的课程。要开火,我试图将背景颜色从蓝色(这意味着它只是一个空单元格)变为黄色(表明我已经在该单元格中开火但没有任何内容)。For loop来改变背景颜色

这是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); 
     } 
    } 
} 

感谢您的帮助。

Hannah

回答

1

您需要在访问网格时使用迭代器变量。

尝试是这样的:

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

,或者如果你想改变的100个随机领域把循环使a并在每次迭代(随机值可以打为以前的值相同b变化里面random.nextInt迭代)

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

即得到在每次迭代中执行的唯一代码是之间{(后for(..))和}的代码。这意味着在您的代码ab中设置了一次,然后您将同一个网格域标记为黄色一百次。如果你这样做,你会在每次迭代中给ab一个新的值。

+0

非常感谢。第二部分工作。为什么必须这样做?我做这件事的原始方式有什么问题?绝对没有必要回答,但我不想在未来犯同样的错误。 Hannah – HanH1113 2013-04-09 13:31:43

+0

@ HanH1113更新了一些解释更多的答案。希望它更清楚。如果不是这样的话,那么我可以进一步改进它。 :) – MAV 2013-04-09 13:35:01