我对“JOUER”功能有点问题。 已经有几天我正在努力,但我看不出问题。 主要问题是:[错误]期望'int'之前的primary-expression和[Error]期望'char'之前的primary-expression。 这是代码:
#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 :(得分:-1)
您的代码中存在一些问题。这看起来像是您第一次使用C ++进行冒险。也许你应该阅读一些关于这个主题的tutorials。此外,当你尝试编写一些代码时,尝试逐个编写代码,检查它是否按预期编译/工作然后继续。 为了给你一些指示,我会尝试在你的代码中列出一些明显的问题:
}
)TicTacToe::affichTab() const
,则无法调用非静态类成员 - 可能您只是想调用affichTab()
jouer
函数可能应该是TicTacToe
类的membet方法,因为它调用了很多成员jouer()
调用的方法与其定义不匹配,例如:
getXOMouv()
名为vs getXOMouv (char symbolMouv)
已宣布mouvValid()
名为vs mouvValid (int x, int y)
已声明 - 我猜你想用x
和y
参数调用表达式if (joueur == 1) ? 'X' : 'O';
不正确,您可能希望使用if或ternary运算符并将结果分配给某个变量,例如:
const char var = (joueur == 1) ? 'X' : 'O';
if (etatJeux==victoire)
应该是成员通话,因此您错过了括号(etatJeux()
)
在jouer
方法中,如果声明方法是使用void返回类型
return 0
语句不正确
在同一方法int tableau[x][y];
内未使用。考虑到该方法应该是一个类成员,该变量隐藏了同名的类成员