2013-04-09 166 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