2017-07-05 3 views
-1

Hallo gestern, ich habe angefangen, ein kleines Tic Tac Toe Spiel zu programmieren, aber heute habe ich einen Fehler gefunden. Das Spiel endet in Draw, wenn eine Rückkehr von '/' (nur 'X' oder 'O' wenn jemand gewinnt) angezeigt wird und der Zähler 9 zeigt, aber es endet auch, wenn ich während des Spiels einen Fehler mache und z. 34 (mögliche Eingaben sind 1-9) und ich erreiche 9 (Counter).Fehler: Erwarte eine Deklaration TicTacToe Spiel

Ich möchte die ‚/‘ auf ‚B‘ und verwenden ändern, aber ich erhalte ‚eine Erklärung Erwartete‘ bei {.

char Checker(); 
{ 
    if (matrix[0][0] && matrix[0][1] && matrix[0][2] && matrix[1][0] && matrix[1][1] && matrix[1][2] && matrix[2][0] && matrix[2][1] && matrix[2][2] == 'X' || 'O') 
     return 'B'; 
} 

Können Sie mir helfen, dieses Problem zu beheben? Wenn Sie den vollständigen Code sehen möchten: https://pastebin.com/E5TzAG4t. Sorry für mein Englisch ist nur eine Sprache, die ich in der Schule (Deutschland) gelernt habe.

Edit: Dies ist der Code Checking 1. zu sehen, ob jemand 2. gewinnt ich dort ein Fehler während Nummer

einfügen gemacht wurde
char Win() 
{ 
    //Spieler X 
    if (matrix[0][0] == 'X' && matrix[0][1] == 'X' && matrix[0][2] == 'X') 
     return 'X'; 
    if (matrix[1][0] == 'X' && matrix[1][1] == 'X' && matrix[1][2] == 'X') 
     return 'X'; 
    if (matrix[2][0] == 'X' && matrix[2][1] == 'X' && matrix[2][2] == 'X') 
     return 'X'; 

    if (matrix[0][0] == 'X' && matrix[1][0] == 'X' && matrix[2][0] == 'X') 
     return 'X'; 
    if (matrix[0][1] == 'X' && matrix[1][1] == 'X' && matrix[2][1] == 'X') 
     return 'X'; 
    if (matrix[0][2] == 'X' && matrix[1][2] == 'X' && matrix[2][2] == 'X') 
     return 'X'; 

    if (matrix[0][0] == 'X' && matrix[1][1] == 'X' && matrix[2][2] == 'X') 
     return 'X'; 
    if (matrix[2][0] == 'X' && matrix[1][1] == 'X' && matrix[0][2] == 'X') 
     return 'X'; 

    //Spieler O 
    if (matrix[0][0] == 'O' && matrix[0][1] == 'O' && matrix[0][2] == 'O') 
     return 'O'; 
    if (matrix[1][0] == 'O' && matrix[1][1] == 'O' && matrix[1][2] == 'O') 
     return 'O'; 
    if (matrix[2][0] == 'O' && matrix[2][1] == 'O' && matrix[2][2] == 'O') 
     return 'O'; 

    if (matrix[0][0] == 'O' && matrix[1][0] == 'O' && matrix[2][0] == 'O') 
     return 'O'; 
    if (matrix[0][1] == 'O' && matrix[1][1] == 'O' && matrix[2][1] == 'O') 
     return 'O'; 
    if (matrix[0][2] == 'O' && matrix[1][2] == 'O' && matrix[2][2] == 'O') 
     return 'O'; 

    if (matrix[0][0] == 'O' && matrix[1][1] == 'O' && matrix[2][2] == 'O') 
     return 'O'; 
    if (matrix[2][0] == 'O' && matrix[1][1] == 'O' && matrix[0][2] == 'O') 
     return 'O'; 

     return '/'; 
} 
char Checker() 
{ 
    if (matrix[0][0] && matrix[0][1] && matrix[0][2] && matrix[1][0] && matrix[1][1] && matrix[1][2] && matrix[2][0] && matrix[2][1] && matrix[2][2] == 'X' || 'O' || '1' || '2' || '3' || '4' || '5' || '6' || '7' || '8' || '9') 
     return 'B'; 
} 
+2

'' O'' ist immer wahr, so dass die if-Aussage immer wahr ist. Meinst du vielleicht 'Matrix [2] [2] == 'X' || Matrix [2] [2] == 'O''? Warum gibt es auch ein ';' nach 'char Checker()'? –

+1

'char Checker();' besser loswerden '' '' hier .. – drescherjm

+0

Wenn Sie überprüfen wollen ob 'p'' 'X'' oder' 'O'' ist, dann tun Sie' if ((p == 'X') oder (p == 'O')) ', nicht 'if (p ==' X 'oder' O ')'. – ForceBru

Antwort

0

es, wie Sie wollen bedeuten

if (matrix[0][0] && matrix[0][1] && matrix[0][2] && matrix[1][0] && matrix[1][1] && matrix[1][2] && matrix[2][0] && matrix[2][1] && matrix[2][2] == 'X' || 'O') 

zu scheint 'wenn m00 und m01 usw. X oder O' ist das leider nicht was es bedeutet. Sie müssen es lange sagen

if((m00 == 'o' || m00 == 'x') && (m01 == 'o' || m01 == 'x') ...