我正在为我的C ++课做一个家庭作业,以制作一个多玩家Tic-tac-toe游戏,但是我遇到了程序输入部分的问题(我几乎所有其他的都在运行)。
无论如何,我的目标是提示当前玩家获取格式row,col中的行和列。然后我需要将他们的标记放在代表游戏板的二维数组中。
我认为我可以简单地使用cin将其输入读入char数组,然后在该数组中取0位置和2位置,我将从输入中得到两个数字。但是,如果我这样做,我最终会得到输入的ASCII值,而不是数字(例如,我得到49而不是'1')。
我觉得我可能忽略了一些非常简单的东西,所以任何输入都会非常有用并且非常感激。这就是我所拥有的:
void getEntry(char XorO, char gameBoard[GRID_SIZE][GRID_SIZE])
{
char entry[3];
cout << XorO << " - enter row,col: ";
cin >> entry;
int row = entry[0];
int col = entry[2];
//Then I would use the row, col to pass the XorO value into the gameBoard
}
答案 0 :(得分:2)
要获得号码
row = entry[0] - '0';
col = entry[2] - '0';
这将从ASCII转换为实际数字。
答案 1 :(得分:1)
请注意,您正在阅读char
数组。将单个char
转换为int
时,您将获得字符'0'
,'1'
或'2'
的ASCII(或Unicode)值,而不是整数值0
,1
或2
。要转换单个数字,您可以使用ASCII代码的有用属性:数字字符是顺序的。这意味着您可以从任何数字中删除'0'
的代码以获取相应的整数值。例如
row = entry[0] - '0';
答案 2 :(得分:1)
让operator>>
处理解释数字:
void getEntry(char XorO, char gameBoard[GRID_SIZE][GRID_SIZE])
{
int row, col;
char comma;
cout << XorO << " - enter row,col: ";
std::cin >> row >> comma >> col;
if( (!std::cin) || (comma != ',') ) {
std::cout << "Bogus input\n";
return;
}
//Then I would use the row, col to pass the XorO value into the gameBoard
}
答案 3 :(得分:0)
void getEntry(char XorO, char gameBoard[GRID_SIZE][GRID_SIZE])
{
char entry[3];
cout << XorO << " - enter row,col: ";
cin >> entry;
int row = entry[0] - '0';
int col = entry[2] - '0';
//if grid_size <= 9
}