[英]C++ Change char variable in function
当我运行此命令时,选择它们时,数字1-9不会更改为X或O。 他们只是停留在数字上。 尝试在void函数中更改char值是否有问题? 不知道如何在不使用void函数的情况下完成此操作。
#include <iostream>
#include <string>
using namespace std;
char vert = 0xB3;
char hori = 0xC4;
char cros = 0xC5;
char one = '1';
char two = '2';
char thr = '3';
char fou = '4';
char fiv = '5';
char six = '6';
char sev = '7';
char eig = '8';
char nin = '9';
char a;
void board()
{
system("cls");
cout << one << vert << two << vert << thr << endl
<< hori << cros << hori << cros << hori << endl
<< fou << vert << fiv << vert << six << endl
<< hori << cros << hori << cros << hori << endl
<< sev << vert << eig << vert << nin << endl;
}
void player1pick()
{
cout << "First Player's turn. Please pick a box: ";
cin >> a;
if(a == 1)
{
one = 'X';
}
if(a == 2)
{
two = 'X';
}
if(a == 3)
{
thr = 'X';
}
if(a == 4)
{
fou = 'X';
}
if(a == 5)
{
fiv = 'X';
}
if(a == 6)
{
six = 'X';
}
if(a == 7)
{
sev = 'X';
}
if(a == 8)
{
eig = 'X';
}
if(a == 9)
{
nin = 'X';
}
board();
}
void player2pick()
{
cout << "Second Player's Turn. Please pick a box: ";
cin >> a;
if(a == 1)
{
one = 'O';
}
if(a == 2)
{
two = 'O';
}
if(a == 3)
{
thr = 'O';
}
if(a == 4)
{
fou = 'O';
}
if(a == 5)
{
fiv = 'O';
}
if(a == 6)
{
six = 'O';
}
if(a == 7)
{
sev = 'O';
}
if(a == 8)
{
eig = 'O';
}
if(a == 9)
{
nin = 'O';
}
board();
}
int main()
{
board();
player1pick();
player2pick();
player1pick();
player2pick();
player1pick();
player2pick();
player1pick();
player2pick();
player1pick();
return 0;
}
这是因为a是一个字符,您将其与1(一个数字)进行比较。 例如,当玩家输入fo 1作为输入时,“ 1”存储在a中(ASCII中为49)。 当您进行比较时,例如if(a == 1)
它基本上会将'1'的ascii值与1进行比较。...因此49 == 1
这当然是错误的。 ou,您必须将a的类型更改为int,或者将char与char- a == '1'
。
问题在于,当您比较用户输入时,您正在比较一个字符值(例如'1'
与整数值1
),该字符值(在大多数情况下)将不相等。
将比较更改为if (a == '1')
,依此类推...
另外,您可能想修改一下将板单元(变量1到nin)存储在某种集合中(数组,std :: vector等),以便于以后处理和扩展。
更改char a;
int a;
它解释为字符
您正在将字符的ascii值与数字进行比较,这对于编译器来说可以,但是我认为这不是您想要的。 所以要么将char a to int
更改char a to int
或将比较结果更改为a=='1'
我建议您将所有的if语句替换为一个数组 ,
int a;
char numbers[9] = {'1','2','3','4','5','6','7','8','9'};
在您可以执行的功能中:
cin >> a;
numbers[a] = 'O';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.