2016-11-24 60 views
-4

我有一个功能“JOUER”的小问题。 我已经过了几天的工作,但我看不到问题所在。 主要问题是:[错误]在'char'之前的'int'和[Error]预期的primary-expression之前预期的primary-expression。 下面是代码:我在C++中的TicTacToe游戏中的一个函数


#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'without object – Sorel

+2

错误只是表示它说的是什么。这里'TicTacToe :: affichTab();'你正试图调用没有对象的函数。要么使方法静态或在对象上调用它 – user463035818

回答

-1

有代码中的几个问题。这看起来像是你第一次使用C++进行冒险。也许你应该阅读关于该主题的一些tutorials。此外,当你尝试写一段代码时,试着逐个写一段代码,检查它是否按预期编译/工作,然后继续前进。 给你一些方向,我会尝试列出代码中的一些值得注意的问题:

  • 缺少括号(主要是}
  • 不能调用非静态类成员无一物TicTacToe::affichTab() const - 只是可能你想叫affichTab()
  • jouer功能也许应该是TicTacToe类的membet方法,因为它调用了很多会员的
  • 方法从jouer()称为不符合他们的定义,对于为例E:
    • getXOMouv()称为VS getXOMouv (char symbolMouv)宣布
    • mouvValid()称为VS mouvValid (int x, int y)宣告 - 我猜你想与xy参数
  • 表达if (joueur == 1) ? 'X' : 'O';是不正确的调用这个,你会想使用if或者三元运算符,并且可能将结果分配给某些变量,例如:

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

  • if (etatJeux==victoire)应该是一个成员通话,让你错过了括号(etatJeux()

  • 里面的jouer方法你有一个return 0说法是不正确的考虑方法声明返回类型为void

  • 在相同的方法int tableau[x][y];未使用。考虑到该方法应该是类成员变量隐藏相同名称的类成员

+0

我正在处理所有这些的问题。当它完成并正常工作时,我会分享代码 – Sorel

+0

这是什么意思“还没有工作”?仍然不编译?什么是错误? – Dusteh

+0

你是否已将定义更新为'void TicTacToe :: jouer()?' – Dusteh

相关问题