我在C ++中使用TicTacToe游戏的一个功能

时间:2016-11-24 19:16:58

标签: c++ tic-tac-toe

我对“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

1 个答案:

答案 0 :(得分:-1)

您的代码中存在一些问题。这看起来像是您第一次使用C ++进行冒险。也许你应该阅读一些关于这个主题的tutorials。此外,当你尝试编写一些代码时,尝试逐个编写代码,检查它是否按预期编译/工作然后继续。 为了给你一些指示,我会尝试在你的代码中列出一些明显的问题:

  • 缺少括号(主要是}
  • 如果没有对象TicTacToe::affichTab() const,则无法调用非静态类成员 - 可能您只是想调用affichTab()
  • jouer函数可能应该是TicTacToe类的membet方法,因为它调用了很多成员
  • jouer()调用的方法与其定义不匹配,例如:
    • getXOMouv()名为vs getXOMouv (char symbolMouv)已宣布
    • mouvValid()名为vs mouvValid (int x, int y)已声明 - 我猜你想用xy参数调用
  • 表达式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];内未使用。考虑到该方法应该是一个类成员,该变量隐藏了同名的类成员