C++程序,将整数输入转换为字符的问题
C++ Program, Issue converting integer input to char
我目前正在制作一个非常简单的tictactoe程序,但我遇到了一个小问题。我使用2-D字符数组创建了一个游戏板(不是为此使用字符的疯狂粉丝,但认为这是使我能够在数组中输入X和O以输出到屏幕上的最简单方法)。
在 PlayerOneMove() 函数中,我提示用户输入他想要放置游戏棋子的单元格 (1-9)。输入存储为字符。然后,我将他的单元格选择传递给 MakeMove() 函数,该函数检查用户输入的字符当前是否存储在数组中。但是,该函数始终返回 false。
我意识到这是一个问题,编译器将输入视为整数并且不匹配数组中的字符(因为如果我用字母替换数组中的元素,然后输入一个字母,它会找到匹配项),但我不确定如何解决这个问题。我尝试将 ASCII 值添加到字符并将 char 输入更改为整数输入,然后将其静态转换为字符无济于事。在我决定完全歼灭字符数组之前,任何帮助将不胜感激!!
class TicTacToe {
private:
char board[3][3] =
{
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
public:
void DrawBoard();
void PlayerOneMove();
bool MakePlay(char, char);
};
void TicTacToe::PlayerOneMove() {
char cell;
cout << "Player One, please select a cell: ";
cin >> cell;
while (!MakePlay(cell, 'O')) {
cout << "That cell is unavailable. Please select another cell: ";
cin >> cell;
}
}
bool TicTacToe::MakePlay(char cell, char player) {
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 3; col++) {
if (board[row][col] == cell) {
board[row][col] = player;
return true;
}
else return false;
}
}
}
int main() {
TicTacToe game;
game.DrawBoard();
game.PlayerOneMove();
return 0;
}
示例:https://i.stack.imgur.com/sGFjZ.jpg
您在MakePlay
中有一个逻辑错误。
当您输入嵌套的 for 循环时,它将检查输入是否与第一个单元格匹配,如果不匹配,它将返回 false。其余的单元格将永远不会被检查。
您要做的是检查所有单元格,如果它与其中任何一个不匹配,则返回 false。
你可以像这样重写它:
bool TicTacToe::MakePlay(char cell, char player) {
bool found_cell = false;
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 3; col++) {
if (board[row][col] == cell) {
board[row][col] = player;
found_cell = true;
}
}
}
return found_cell;
}
相关文章:
- 从矢量C++读取字符时出现问题
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- C++理解计算字符变量的问题
- 将十六进制值设置为用于填充的字符变量时出现问题
- 编写 cin.get() 以接收字符数组时出现问题
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 将字符数组转换为结构时出现问题. 结构的字符数组变量溢出
- 字符 * 未从重载运算符或内存管理问题正确返回
- 将utf16宽std::wstring转换为utf8窄std::string以获得罕见字符时出现问题
- 我在使用字符的函数时遇到了一些问题
- 用wchar_t处理 unicode 字符好吗?它不会引起任何问题吗?
- 将 c++ 字符串转换为常量字符 * 时出现问题
- Unicode 字符问题/转换参数
- 结构转换为原始字符问题
- 将 str 转换为字符*问题
- 将字符串转换为常量字符*问题
- istream末尾的字符问题
- C++字符*问题
- 结构中的字符问题
- 数据结构- c++字符问题