Tictactoe 游戏变量未在作用域中声明



您好,我是 c++ 的新手,我想构建一个 tictactoe 游戏,但是当我编译游戏时,它总是给我这个错误,我的变量没有在范围内声明。然后我试图将平方作为全局变量,但这给了我错误。

有人可以帮助我吗?

include <iostream>
using namespace std;
void Game();
void Spielerfeld();
void Game(){
int player;
int choice;
char mark;
Spielerfeld();
do{
cout << "Wer ist als erstes in der Reihen" << choice;
player = 1;
cout << "Player:" << player << "Gebe eine nummer ein";
cin >> choice;
mark = (player);'X';'O';
if(choice == 1 && square[1] == '1')
square[1] == mark;
else if(choice == 2 && square[2] == '2')
square[2] = mark;
else if(choice == 3 && square[3] == "2")
square[3] = mark;
else if(choice == 4 && square[4] == '4')
sqaure[4] = mark;
else if(choice == 5 && square[5] ==  "5")
sqaure[5] == mark;
else if(choice == 6 && square[6] ==  "6")
sqaure[6] == mark;
else if(choice == 7 && square[7] ==  "7")
sqaure[7] == mark;
else if(choice == 8 && square[8] ==  "8")
sqaure[8] == mark;
else if(choice == 9 && square[9] ==  "9")
sqaure[9] == mark;
}while(choice == 9);
}

void Spielerfeld(){
int square[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int i;
for(i=0; i<10; i++){
cout << square[i] << endl;
}
cout << square[1] << "|" << square[2] << "|" << sqaure[3];
cout << "-----------|--------";
cout << square[4] << "|" << square[5] << "|" << sqaure[6];
cout << "-----------|--------";
cout << square[7] << "|" << square[8] << "|" << sqaure[9];
}
int main(){
Spielerfeld();``
Game();
}

1(Square 是 Spielerfeld(( 函数中的一个局部变量,它在函数结束后销毁,所以你不能使用它。

2(您将"Square"定义为内置数组,并且内置数组元素以零索引开头。所以当你想访问第一个元素时,你应该使用 Square[0]。

我将 Square 定义为全局变量并修改您的代码。 现在试试吧。


#include <iostream>
using namespace std;
void Game();
void Spielerfeld();
int square[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
void Game() 
{
int player = 0;
int choice = 0;
char mark = 0;
Spielerfeld();
do {
cout << "Wer ist als erstes in der Reihen" << choice;
player = 1;
cout << "Player:" << player << "Gebe eine nummer ein";
cin >> choice;
mark = (player); 'X'; 'O';
if (choice == 1 && square[0] == 1)
square[0] = mark;
else if (choice == 2 && square[1] == 2)
square[1] = mark;
else if (choice == 3 && square[2] == 2)
square[2] = mark;
else if (choice == 4 && square[3] == 4)
square[3] = mark;
else if (choice == 5 && square[4] == 5)
square[4] = mark;
else if (choice == 6 && square[5] == 6)
square[5] = mark;
else if (choice == 7 && square[6] == 7)
square[6] = mark;
else if (choice == 8 && square[7] == 8)
square[7] = mark;
else if (choice == 9 && square[8] == 9)
square[8] = mark;
} while (choice == 9);
}

void Spielerfeld() {
int i;
for (i = 0; i < 9; i++) 
{
cout << square[i] << endl;
}
cout << square[0] << "|" << square[1] << "|" << square[2];
cout << "-----------|--------";
cout << square[3] << "|" << square[4] << "|" << square[5];
cout << "-----------|--------";
cout << square[6] << "|" << square[7] << "|" << square[8];
}
int main() 
{
Spielerfeld();
Game();
}

你遇到的简单问题。在C++中,==运算符和=运算符之间存在差异。简单地说,==用于相等比较=用于变量赋值。所有那些说square[i] == mark;的台词都应该说square[i] = mark;

最新更新