2017-08-20 3 views
-3

Imは、基本的なTic Tac ToeゲームをC++で作成しようとしています。このコードがコンパイルされ実行されている間、私はボードゲームの上にこのエラーコードを続けます:0x6fefec84。私はC++の非常に新しいことです。このエラーはsegfaultですか?またはコード内で進行中のUBのようなものがありますか?どんな助けでも大歓迎です。ありがとう!コードエラーで謎のテキストベースのC++ゲーム

#include <iostream> 


using namespace std; 



    char square[10] = {'0','1','2','3','4','5','6','7','8','9'}; 

    int checkwin(); 
    int board(); 


    int main() { 


     int player = 1,i,choice; 

     char mark; 

     do { 


     board(); 
     player=(player%2)?1:2; 


     cout << "Player" << player << ", enter a number: "; 
     cin >> choice; 


     mark=(player == 1) ? 'X' : 'O'; 

     if (choice == 1 && square [1] == '1') 


      square [1] = mark; 
     else if (choice == 2 && square [2] == '2') 

      square [2] = mark; 
     else if(choice == 3 && square [3] == '3') 

      square [3] = mark; 
     else if(choice == 4 && square [4] == '4') 

      square [4] = mark; 
     else if(choice == 5 && square [5] == '5') 

      square [5] = mark; 
     else if(choice == 6 && square [6] == '6') 

      square [6] = mark; 
     else if(choice == 7 && square [7] == '7') 

      square [7] = mark; 
     else if(choice == 8 && square [8] == '8') 

      square [8] = mark; 
     else if(choice == 9 && square [9] == '9') 


      square [9] = mark; 

     else { 

      cout << "Invalid move"; 

     player--; 
     cin.ignore(); 
     cin.get(); 

     } 
     i=checkwin(); 

     player++; 
    }while(i==-1); 

    board(); 
    if(i==1) 



     cout<<"==>\aPlayer "<<--player<<" win "; 

    else 

     cout<<"==>\aGame draw"; 


    cin.ignore(); 
    cin.get(); 
    return 0; 

} 



    int checkwin() { 


    if(square[1] == square[2] && square [2] == square[3]) 

       return 1; 
     else if(square[4] == square[5] && square [5] == square[6]) 

       return 1; 
     else if(square[7] == square[8] && square[8] == square[9]) 

       return 1; 
     else if(square[1] == square[4] && square[4] == square[7]) 

       return 1; 
     else if(square[2] == square[5] && square[5] == square[8]) 

       return 1; 
     else if(square[3] == square[6] && square[6] == square[9]) 

       return 1; 
     else if(square[1] == square[5] && square[5] == square[9]) 

       return 1; 
     else if(square[3] == square[5] && square[5] == square[7]) 

       return 1; 
     else if(square[1] != '1' && square[2] != '2' && square [3] != '3' && square [4] != '4' 
      && square[5] != '5' && square[6] != '6' && square[7] != '7' && square[8] != '8' && square [9] != '9') 

      return 0; 

     else 

      return -1; 
    } 


     int board() { 


     cout << "\n\n\tTic Tac Toe\n\n"; 

     cout << "Player 1 (X) - Player 2 (O)" << endl << endl<< 
     cout << endl; 

     cout << "  | | " << endl; 
     cout << " " << square[1] << " | " << square[2] << " | " << square[3] << endl; 

     cout << "----|----|----" << endl; 
     cout << "----|----|----" << endl; 


     cout << " " << square[4] << " | " << square[5] << " | " << square[6] << endl; 


     cout << "----|----|----" << endl; 
     cout << "----|----|----" << endl; 


     cout << " " << square[7] << " | " << square[8] << " | " << square[9] <<endl; 

     cout << "  | | " << endl << endl; 

    return 0; 

} 

答えて

3

「プレーヤー」出力行の最後にセミコロンがありません。最後に<<、あなたの出力あなたが見ている「0x6fefec84」値であるcoutのアドレスを使用して

cout << "Player 1 (X) - Player 2 (O)" << endl << endl; 

+0

私にこれを手伝ってくれてありがとう。私は変更を加えましたが、そのエラーコードはもう表示されません。どうもありがとうございます! – Gus

3
cout << "Player 1 (X) - Player 2 (O)" << endl << endl<< 
cout << endl; 

あなたはその16進コードを印刷します。最初の行に最後の< <の代わりにセミコロンを付ける必要があります。

+0

ありがとうございました。私はとても感謝しています!私はちょうど新しい訂正でコードを再コンパイルしましたが、今はそのエラーなしで動作します。あなたの助けをしてくれてありがとう! – Gus

関連する問題