我正在尝试创建一个井字游戏,用户在其中输入数字(对应于他想要放置X或O的位置),但是接收数字的变量(Move)保持为0否无论输入什么。您能帮我弄清楚要解决的内容,以便变量实际接收用户输入的内容吗?这是接收移动的函数的代码:
int FDeclarations::GetMove(){
int Move;
std::cin >> Move;
return Move;}
这是通过switch语句的函数的代码(由于变量“ Move”始终为0,因此无用)
int FDeclarations::PlaceMove(){
switch (Move)
{
case(1):
if (turn == false) { TopLeft = 'x'; }
else { TopLeft = 'o'; }
break;
case(2):
if (turn = false) { TopMid = 'x'; }
else { TopMid = 'o'; }
break;
case(3):
if (turn = false) { TopRight = 'x'; }
else { TopRight = 'o'; }
break;
case(4):
if (turn = false) { MidLeft = 'x'; }
else { MidLeft = 'o'; }
break;
case(5):
if (turn = false) { MidMid = 'x'; }
else { MidMid = 'o'; }
break;
case(6):
if (turn = false) { MidRight = 'x'; }
else { MidRight = 'o'; }
break;
case(7):
if (turn = false) { BotLeft = 'x'; }
else { BotLeft = 'o'; }
break;
case(8):
if (turn = false) { BotMid = 'x'; }
else { BotMid = 'o'; }
break;
case(9):
if (turn = false) { BotRight = 'x'; }
else { BotRight = 'o'; }
break;
}
table();
return 0;
}
这是我的变量声明:
class FDeclarations
{
public:
int PlaceMove();
int GetMove();
int CheckWin();
void table();
private:
bool turn = false;
int Move;
char TopLeft = '1';
char TopMid = '2';
char TopRight = '3';
char MidLeft = '4';
char MidMid = '5';
char MidRight = '6';
char BotLeft = '7';
char BotMid = '8';
char BotRight ='9';
bool XWin;
bool OWin;
};
答案 0 :(得分:3)
在您的职能中
int FDeclarations::GetMove() {
int Move;
std::cin >> Move;
return Move;
}
您声明一个名为Move
的 new 变量,该变量在该函数中是本地的。这与在类中声明的成员变量Move
不同。 C ++更愿意绑定到功能级别的变量。
除非您使用GetMove
的返回值在未显示给我们的代码中设置成员变量Move
,否则成员变量Move
永远不会改变,从而导致问题
答案 1 :(得分:2)
在FDeclarations::GetMove()
中,您需要将类Move
的私有成员设置为用户将要输入的任何内容,而不是将局部变量遮盖住该成员的局部变量。因此,一个快速的解决方法是:
int FDeclarations::GetMove(){
std::cin >> Move;
return Move;}