2012-10-25 98 views
1

我創建一個連接四,試圖實現拖放功能,添加到特定列中的最低行。繼承人用於板C++ 2d字符數組比較不當

Board::Board() 
{ 
    for(int i=0;i<8;i++) 
     for(int j=0;j<8;j++) 
      place[i][j] = EMP; // EMP is a const char = '-' 

    cout << "Initalized.\n"; 
} 

出於某種原因在init這個代碼運行一路直到I = 1,則設置場所[1] [山口]爲* 但是當我去,以顯示這一點,它示出了*在數組的底部,所以放置[7] [col]。

此外 - >在開始放置和放置在開始時不會給我應該是' - '的輸出。

int Board::add(int player, int col) 
{ 
    char piece; 
    col--; // Dealing with array starting at 0, not 1 
    (player==1) ? piece = P1: piece = P2; // Character defining players piece 
    int i; 

    for (i = 7; i >= 0; i--) 
    { 

     cout << "this - " << this->place[i][col] << endl; 
     cout << "place - " << place[i][col] << endl; 
     if(place[i][col] == EMP) 
     { 
      cout << "Empty looks like " << place[i][col] << "\ti: " << i << endl; 
      place[i][col] = piece; 
      system("pause"); 
      return i; 
     }else 
     { 
      cout << "not EMP - " << place[i][col] << endl; 
      system("pause"); 
     } 
    } 

    return 0; 
} 
+0

你的問題很模糊,「一路打印到1,然後做什麼?」這是一個問題的很多代碼。你能不能至少減少一點,以便能夠正常評估它。其次,你有一個功能粘貼多次,這真的讓讀者感到困惑。花一些時間解釋你的問題,你一定會得到答案 – fayyazkl

+0

清楚地說明什麼是行不通的,什麼是預期的。你太亂了。我甚至無法弄清楚你的代碼出現了什麼問題 – fayyazkl

+0

異常的語法,通常會寫:char piece =(player == 1)? P1:P2; –

回答

2

您將一個字符傳入您的int函數中,該函數將該數字轉換爲char變量(給您垃圾)。我重寫了一點功能,一切似乎都很好。

int Board::add(int player, char col) 
{ 
    char piece; 
    int Num; 
    Num = atoi(&col); 
    cout << Num << endl << endl; 
    Num--; // Dealing with array starting at 0, not 1 
    (player==1) ? piece = P1: piece = P2; // Character defining players piece 
    int i; 

    for (i = 7; i >= 0; i--) 
    { 

     cout << "this - " << this->place[i][Num] << endl; 
     cout << "place - " << place[i][Num] << endl; 
     if(place[i][Num] == EMP) 
     { 
      cout << "Empty looks like " << place[i][Num] << "\ti: " << i << endl; 
      place[i][Num] = piece; 
      return i; 
     }else 
     { 
      cout << "not EMP - " << place[i][Num] << endl; 
     } 
     system("pause"); 
    } 

    return 0; 
} 

希望這會有所幫助。

+0

不能相信我不承認這一點,謝謝。 – George

0

的一點想法:

不要delete place,你從來沒有使用過new來獲得內存。
它更習慣使用條件運算符是這樣的:piece = (player==1) ? P1: P2;

的代碼初始化,添加和顯示器件相當多的作品在這裏:http://codepad.org/QIWHagMk

你能更具體你要問什麼,或者顯示一個小得多的代碼片段,顯示你看到的問題?