Tic-Tac-Toe之前应为主要表达式

Tic Tac Toe Expected Primary Expression Before

本文关键字:表达式 Tic-Tac-Toe      更新时间:2023-10-16

我现在正在学习c++,我的任务是创建一个井字游戏,从.txt文件中读取移动,看起来像这样:2 31 32 23 2等

这就是我构建的代码:

#include <iostream>
#include <fstream>
using namespace std;
char my_board[3][3]{0,0,0,
0,0,0,
0,0,0,};

int i = 0, j = 0;
int line = 0;
int X = 0, O = 0, N = 0;
void loadSquaresFromStream(int my_board[3][3], int i, int j);
void getgameStatus (int X, int O, int N, int i, int j, int my_board[3][3]);
void displayTotals(int X, int O, int N);
int main(){

cout << loadSquaresFromStream(int my_board[3][3], int i, int j) << endl;

return 0;
}
void loadSquaresFromStream(int my_board[3][3], int i, int j){
ifstream inputStream;
inputStream.open("games.txt");
//take all numbers from txt and input into an array
int moves[] = inputStream;
for (moves[i] != 0 && moves[j] != 0 ){
switch(line){
case %2:
my_board[i][j] = x;
i++; j++;
break;
case %1:
my_board[i][j] = o;
i++; j++;
break;
}
}
else if ((moves[i] == 0) && (moves[j] == 0)){
cout << getgameStatus(X, O, N, i,j, my_board[3][3]) << endl;
}
else{
cout << displayTotals(X, O, N) << endl;
}
}
void getgameStatus (int X, int O, int N, int i, int j, int my_board[3][3]){
if (my_board[1][1] == x && my_board[1][2] == x && my_board[1][3] == x){ //All possible games where x wins
cout << "x wins" << endl;
X++;
}
else if (my_board[2][1] == x && my_board[2][2] == x && my_board[2][3] == x){
cout << "x wins" << endl;
X++;
}
else if (my_board[3][1] == x && my_board[3][2] == x && my_board[3][3] == x){
cout << "x wins" << endl;
X++;
}
else if (my_board[1][1] == x && my_board[2][1] == x && my_board[3][1] == x){
cout << "x wins" << endl;
X++;
}if (my_board[1][1] == x && my_board[1][2] == x && my_board[1][3] == x){
cout << "x wins" << endl;
X++;
}
else if (my_board[2][1] == x && my_board[2][2] == x && my_board[2][3] == x){
cout << "x wins" << endl;
X++;
}
else if (my_board[3][1] == x && my_board[3][2] == x && my_board[3][3] == x){
cout << "x wins" << endl;
X++;
}
else if (my_board[1][1] == x && my_board[2][1] == x && my_board[3][1] == x){
cout << "x wins" << endl;
X++;
}
else if (my_board[1][2] == x && my_board[2][2] == x && my_board[3][2] == x){
cout << "x wins" << endl;
X++;
}
else if (my_board[1][3] == x && my_board[2][3] == x && my_board[3][3] == x){
cout << "x wins" << endl;
X++;
}
else if (my_board[1][1] == x && my_board[2][2] == x && my_board[3][3] == x){cout << "Total games won by x: " << X << endl;
}
cout << "x wins" << endl;
X++;
}
else if (my_board[1][3] == x && my_board[2][2] == x && my_board[3][1] == x){
cout << "x wins" << endl;
X++;
}
else if (my_board[1][2] == x && my_board[2][2] == x && my_board[3][2] == x){
cout << "x wins" << endl;
X++;
}void displayTotals(X, O, N)
else if (my_board[1][3] == x && my_board[2][3] == x && my_board[3][3] == x){
cout << "x wins" << endl;
X++;
}
else if (my_board[1][1] == x && my_board[2][2] == x && my_board[3][3] == x){
cout << "x wins" << endl;
X++;
}
else if (my_board[1][3] == x && my_board[2][2] == x && my_board[3][1] == x){
cout << "x wins" << endl;
X++;
}
else if (my_board[1][1] == o && my_board[1][2] == o && my_board[1][3] == o){ //All possible games where o wins
cout << "o wins" << endl;
O++;
}
else if (my_board[2][1] == o && my_board[2][2] == o && my_board[2][3] == o){
cout << "o wins" << endl;
O++;
}displayTotals(X, O, N)
else if (my_board[3][1] == o && my_board[3][2] == o && my_board[3][3] == o){
cout << "o wins" << endl;
O++;
}
else if (my_board[1][1] == o && my_board[2][1] == o && my_board[3][1] == o){
cout << "o wins" << endl;
O++;cout << "Total games won by x: " << X << endl;
}
}
else if (my_board[1][2] == o && my_board[2][2] == o && my_board[3][2] == o){
cout << "o wins" << endl;
O++;
}
else if (my_board[1][3] == o && my_board[2][3] == o && my_board[3][3] == o){
cout << "o wins" << endl;
O++;
}
else if (my_board[1][1] == o && my_board[2][2] == o && my_board[3][3] == o){
cout << "o wins" << endl;
O++;
}
else if (my_board[1][3] == o && my_board[2][2] == o && my_board[3][1] == o){
cout << "o wins" << endl;
O++;
}
else{
cout << "game incomplete" << endl; //All incomplete games
N++;
}
}
void displayTotals(int X, int O, int N){
cout << "Total games won by x: " << X << endl;
cout << "Total games won by o: " << O << endl;
cout << "Total games incomplete: " << N << endl;
}

我有几个相同的"预期的主要表达式之前…"错误贯穿始终。我搞不清是什么原因造成的。我是新来的,所以很抱歉,如果它是冗长的。谢谢你们的帮助。

好的,您发布的代码有几个错误。

对于初学者来说,您应该知道C++是一种区分大小写的语言。在多个地方,您已经完成了以下操作:

if (my_board[1][1] == x && my_board[1][2] == x && my_board[1][3] == x)

问题是您的变量命名为XO,而不是xo。改变那些。

您还尝试使用void返回类型来流式传输函数的返回值。你根本做不到。顾名思义,void什么都不是,所以您试图将任何内容流式传输到控制台。

对于您的switch声明,您写道:

case %2:

这完全是无效的。我不确定你在那里想做什么,所以我真的不能给你指明正确的方向。

最后,我注意到全局变量的名称和类型与函数参数相同。两者兼得真的没有意义。要么你有全局变量来避免传递它们(这不是好的做法,不要这样做),要么你有函数参数;不要两者都做。