2011-02-28 226 views
1
void GameBoard::print(const GameBoard& computerBoard) 
{ 
Grid[0][0] = '1'; 
Grid[0][1] = '2'; 
Grid[1][0] = '3'; 

int i, j; 
int sides = SIZE; 

cout << "  Your bombs:     Your navy:" << endl << endl; 

for(i=0; i<SIZE; i++) 
{ 
    // prints your bombs 
    cout << sides << " "; 
    for(j=0; j<SIZE; j++) 
    { 
     cout << computerBoard.Grid[i][j] << " "; 
    } 
    cout << " "; 

    // prints your ships 
    cout << sides << " "; 
    for(j=0; j<SIZE; j++) 
    { 
     cout << Grid[i][j] << " "; 
    } 
    cout << endl << endl; 
    sides--; 
} 

j = 0; 
cout << "\n "; 

for(i=0; i<SIZE; i++) 
{ 
    j = i + 'A'; 
    cout << (char)j << " "; 
} 
cout << "  "; 

for(i=0; i<SIZE; i++) 
{ 
    j = i + 'A'; 
    cout << (char)j << " "; 
} 
cout << endl << endl; 

}For循環邏輯錯誤?

我喜歡建造戰艦遊戲,並需要改變for循環讀取..

for(i=8;i>0;i--) 

爲什麼這產生一個錯誤?

對不起,如果這沒有意義,Grid [0] [0]應該在左下角,但它目前在左上角。

+2

正在產生什麼錯誤?另外,如果你在你想要的for循環(i = 8 ...),你是否在'Grid'中調用這些位置?如果是這樣,數組索引0-8必須存在,所以它必須是「類型Grid [9]」或其他。 – RageD 2011-02-28 01:00:13

+0

我看不到包含該行的主代碼中的任何位置。這條單線對我來說看起來很好,除非變量我沒有事先聲明。 – user607455 2011-02-28 01:01:39

+0

順便說一句,儘量不要使用'魔術數字' – 2011-02-28 01:02:01

回答

8

我猜你想要的東西是一樣的東西

for(i=SIZE-1; i>=0; i--) 

,因爲這相當於

for(i=0; i<SIZE; i++) 

這兩個去從0..SIZE-1

for(i=SIZE; i>0; i--) 

1..SIZE變(和所以如果你訪問一個長度爲的數組10使用arr[i],會產生錯誤)。

+0

在製作8 x 8網格時,網格[0] [0]位於左上角。我需要它在左下角位置。 – bluetickk 2011-02-28 01:05:55

+0

如果你訪問過索引'i - 1',最後一個循環就可以工作,但那會很難看。 – Marlon 2011-02-28 01:06:31

+0

@Marlon:非常好,編輯答案讓這一點更清晰。 – schnaader 2011-02-28 01:08:29