2012-02-15 90 views
1

你好,我17歲,正在努力學習如何編寫代碼。我在調試這部分代碼時遇到了麻煩,並希望得到一些幫助。檢查Tic-Tac-Toe的運行狀況

bool checkifwin(char grid[3][3], char player) 
{ 
    if (checkverticle(char grid[3][3], char player) 
     || checkhorizontal(char grid[3][3], char player) 
     || checkdiagonal(grid[3][3], player) 
     return true; 
    else 
     return false; 
}; 

它說在char之前預期的初級表達。

+0

可能是一個拼寫錯誤,但是你在if語句後缺少一個右括號。 – sooper 2012-02-15 02:26:43

+1

只是美容 - 你拼錯垂直。對不起,它困擾我:/ – Pochi 2012-02-15 02:34:48

+0

函數或方法聲明的大括號後面不需要分號。 (類聲明需要它們,但是...) – HostileFork 2014-10-03 06:21:26

回答

4

checkverticle()是對函數的調用而不是聲明,因此您不需要「char」。

bool checkifwin(char grid[3][3], char player) 
{ 
    if (checkverticle(grid, player) || 
     checkhorizontal(grid, player) || 
     checkdiagonal(grid, player) return true; 
    else return false; 
}; 

只是一些編碼建議。在我看來:

bool func() 
{ 
    if (expr) 
     return true; 
    else 
     return false; 
} 

不是很棒的風格。我建議將其重構爲:

bool func() 
{ 
    bool result = false; // This just makes it clear the expected default. 
    // You could even go as far as 
    // bool result = expr or event return expr; - although I suggest sticking with a 
    // variable in case you need to debug. 
    result = expr; // e.g. result = checkVert() || checkHoriz() || checkDiag(); 
    return result; 
} 
2

調用函數時不需要指定類型名稱。

if (checkverticle(char grid[3][3], char player) // Remove char here and in other cases 

關於錯誤的詳細你 -

checkverticle(grid[3][3] ...) 

這裏grid[3][3]爲您提供了索引處的字符。正如其他人所建議的,你真正想要通過的是grid本身。當然,要小心有效的數組索引。

+0

噢好吧我擺脫了這些類型的名稱,但現在它說'char'無效轉換爲'char(*)[3]' – 2012-02-15 02:26:54

+0

對不起,我認爲它可能不得不做而其他代碼在這個被調用的函數後生病了 – 2012-02-15 02:29:28

1

您試圖將類型聲明作爲參數傳遞。試試這個:

bool checkifwin(char grid[3][3], char player) 
{ 
    return checkverticle(grid], player) || 
    checkhorizontal(grid, player) || 
    checkdiagonal(grid, player; 

}; 
相關問題