这是我在这里的第一个问题,我希望我能够具体到足够的......
问题是,我正在用C ++编写Tic Tac Toe游戏,而且我遇到了一些问题..
设置如下:
1 2 3
4 5 6
7 8 9
输入X位置://用户输入 - 1-9
中的数字它是一个二维 char 数组(它是char的原因是因为我最终需要用X或O替换所有字符。)
我可以让它发挥作用,那就是......当我要求玩家X或玩家O为他们的位置输入一个数字时,它会变成X或O. 我有一个if语句,如果用户输入的数字不是1-9之间的数字,则会向用户显示错误,并且除了一个小问题外它可以工作..
如果玩家X进入,例如" 23",我的阵列中的2和3都变为X,这不应该发生:
1 2 3
4 5 6
7 8 9
输入X位置:23
1 X 3
4 5 6
7 8 9
1 X X
4 5 6
7 8 9
有什么方法可以让我的错误if语句输入两个或更多字符?
提前致谢。
答案 0 :(得分:0)
我相信你可以使用std :: getline
达到你想要的效果文档http://www.cplusplus.com/reference/string/string/getline/
有了这个,你可以检查返回的字符串的长度是否大于1,以进入你的错误if-else。
然后将其更改为数字,您可以在进行一些验证后使用atoi,这是一个实际数字。 (在纯c ++中,您可以使用stringstream转换为数字http://www.cplusplus.com/reference/sstream/stringstream/)
答案 1 :(得分:0)
你说过,你有一个二维char数组。 我将制作一个简单的一维字符数组,包含9个字段(从0到8)。 当你向玩家询问一个位置(1-9)时,你让他们输入一个int值,并将数字-1的数组字段设置为相应的符号。
类似的东西:
char arr[9];
//set all positions to numbers
int i=10;
std::cout<<"Player X, enter position!" << endl;
cin >> i;
i=i-1;
if(i<0 || i>8) {
//error
}
arr[i]='x';