2016-11-24 7 views
-4

"JOUER"という機能に少し問題があります。 私はそれに取り組んでいるのは数日ですが、私は問題を見ることができません。 主な問題は次のとおりです。[エラー] 'char'の前に 'int'および[Error]の前に予期されたprimary-expressionが必要です。あなたのコード内のいくつかの問題がありC++のTicTacToeゲームの私の機能の1つ


#include <iostream> 
using namespace std; 
enum etat { victoire, continuer, null }; 
int qntMouv = 0; 
class TicTacToe { 
public: 
TicTacToe(); 
etat etatJeux(); 
void affichTab() const ;  
bool getXOMouv (char symbolMouv); 
bool mouvValid (int x, int y) const; 
void recommence(); 
void game(); 
void jouer(); 
private: 
char tableau[3][3];   
}; // fin classe TicTacToe 

TicTacToe::TicTacToe() 
{ 
for(int i = 0; i < 3; i++) 
for(int j = 0; j < 3; j++) 
tableau[i][j] = ' ';  
qntMouv = 0; // le tableau est vide   
} // fin constructeur TicTacToe 


bool TicTacToe::mouvValid (int x, int y) const{ 

    int lig, col; 

    if (lig >= 0 && lig <= 2 && col >=0 && col <= 2 && tableau[x] [y] == ' ') 
     return true; 

    else return false; 

} // fin du bool mouvValid 


    etat TicTacToe::etatJeux() { 

if ((tableau[0][0]) && (tableau[1][0]) && (tableau[2][0])) return victoire; //colomne 

else if ((tableau[0][1]) && (tableau[1][1]) && (tableau[2][1])) return victoire; //colomne 

     else if ((tableau[0][2]) && (tableau[1][2]) && (tableau[2][2])) return victoire; // colomne 

      else if((tableau[0][0]) && (tableau[0][1]) && (tableau[0][2]))return victoire; // lignme 

       else if ((tableau[1][0]) && (tableau[1][1]) && (tableau[1][2])) return victoire; // ligne 

         else if ((tableau[2][0]) && (tableau[2][1]) && (tableau[2][2])) return victoire; // ligne 

           else if ((tableau[0][0]) && (tableau[1][1]) && (tableau[2][2])) return victoire; // diago 

             else if ((tableau[0][2]) && (tableau[1][1]) && (tableau[2][0])) return victoire; // // diago 

              else if (qntMouv < 9) return continuer; 

               return null; 

} // fin etatJeux 

void TicTacToe::recommence() { 

qntMouv = 0; 

for(int i = 0; i < 3; i++) 

for(int j = 0; j < 3; j++) 

tableau[i][j] = ' '; 

} // fin recommence 
+0

どうしたのですか? – Rakete1111

+0

[エラー]メンバー関数 'void TicTacToe :: affichTab()const'をオブジェクトなしで呼び出すことはできません – Sorel

+2

エラーとは、その内容を意味します。ここで 'TicTacToe :: affichTab();'あなたはオブジェクトなしで関数を呼び出そうとしています。メソッドを静的にするかオブジェクト上で呼び出す – user463035818

答えて

-1

: は、ここでは、コードです。これはC++の最初の冒険のようです。たぶんあなたはそのトピックについてtutorialsを読むべきです。また、コードの一部を書くときには、部分的に書くようにしてください。コンパイルされているかどうかを確認してください。おそらくちょうどあなた -

  • 行方不明括弧(主に}
  • がオブジェクトTicTacToe::affichTab() constせずに非静的クラスのメンバを呼び出すことはできません

      :あなたは私はあなたのコードでは、いくつかの顕著な問題をリストアップしてみましょういくつかの方向性を与えることを affichTab()
    • jouer関数を呼び出すと思ったことはexamplため、jouer()から呼び出されるメソッドは、その定義と一致しない
    • そのメンバーの多くを呼び出しているので、おそらくTicTacToeクラスのmembet方法でなければなりませんE:mouvValid (int x, int y)対と呼ばれるgetXOMouv (char symbolMouv)宣言
    • mouvValid()対と呼ばれる
      • getXOMouv()が宣言 - 私はあなたが表現if (joueur == 1) ? 'X' : 'O';xy引数
    • でこれを呼び出すしたい推測することができます間違っている、あなたがしたいと思いますifまたはternary演算子を使用して、おそらく結果をいくつかの変数に代入することができます。たとえば、次のようになります。

      const char var = (joueur == 1) ? 'X' : 'O';

    • あなたが方法を考え間違っているreturn 0文が無効戻り値の型で宣言されていjouerメソッド内でブラケット(etatJeux()

    • を逃しているのでif (etatJeux==victoire)は、メンバーの呼び出しでなければなりません

    • int tableau[x][y];は未使用です。メソッドがクラスメンバであることを考慮すると、変数は同じ名前のクラスメンバを非表示にします

  • +0

    問題。それが完了して正常に動作したらコードを共有します – Sorel

    +0

    「まだ動作していません」とはどういう意味ですか?まだコンパイルされませんか?エラーは何ですか? – Dusteh

    +0

    定義を 'void TicTacToe :: jouer()?'に更新しましたか? – Dusteh

    関連する問題