是我做的!...almost。
守则:
int main()
{
//initialize
char board[3][3] =
{ '-','-','-',
'-','-','-',
'-','-','-'};
bool gameOver = false;
std::string playerTurn = "player 1";
char chX, chY; //choice x and y
int x = 1;
//game loop
do
{
std::cout << "\n\n\n\n\n\n\n\n\n\n";
std::cout << "Input X, then Y.\np1 = X, p2 = O.";
std::cout << "\n\nTurn: " << playerTurn;
std::cout << "\n\n\n\n\n\n\n\n\n\n";
std::cout << "+---+---+---+" << std::endl;
std::cout << "| " << board[0][0] << " | " << board[0][1] << " | " << board[0][2] << " | " << std::endl;
std::cout << "+---+---+---+" << std::endl;
std::cout << "| " << board[1][0] << " | " << board[1][1] << " | " << board[1][2] << " | " << std::endl;
std::cout << "+---+---+---+" << std::endl;
std::cout << "| " << board[2][0] << " | " << board[2][1] << " | " << board[2][2] << " | " << std::endl;
std::cout << "+---+---+---+" << std::endl;
//get input and change board's value
std::cin >> chX;
std::cin >> chY;
if (playerTurn == "player 1")
board[chX][chY] = 'X';
else if (playerTurn == "player 2")
board[chX][chY] = 'O';
//change turns
if (playerTurn == "player 1")
playerTurn = "player 2";
else if (playerTurn == "player 2")
playerTurn = "player 1";
} while (gameOver == false);
return 0;
}我的问题是:
//get input and change board's value
std::cin >> chX;
std::cin >> chY;
if (playerTurn == "player 1")
board[chX][chY] = 'X';
else if (playerTurn == "player 2")
board[chX][chY] = 'O';这一部分是为了将X和Y坐标改变为X/O,这取决于谁在转动它。然而,这根本不会改变董事会,也不会返回一个错误。另外:board[0][0] = 't';将成功地更改值,并在[0][0]点中打印t。
我遗漏了什么吗?也许问题就在代码的其他地方?(如果问题太简单,我会事先道歉--也许我喝了太多咖啡。)
发布于 2013-11-20 21:20:22
这只是一个小错误--您将chX和chY定义为char,如果用户输入例如' 1 ',它是‘1’的ASCII代码,而不是整数值1。
只需将声明更改为
int chX, chY;而且它应该能工作。
发布于 2013-11-20 21:35:54
正确地将chY和chX从chars更改为int,因为这是数组索引的方式。
然后在输入代码中使用这个
std::cout << "Enter X corrdinate: ";
std::cin >> chX;
std::cout << "\n";
std::cin.clear();
std::cout << "Enter Y corrdinate: ";
std::cin >> chY;
std::cin.clear();
if (playerTurn == "player 1")
board[chX][chY] = 'X';
else if (playerTurn == "player 2")
board[chX][chY] = 'O';Id还创建了一个int类型的第二个数组板,这样您就可以检查玩家是否更容易获胜了。
发布于 2013-11-20 22:06:50
char chX,chY; // valid values -127..128
std::cin >> chX; //gets ascii code of '0', '1' or whichever value you enter
std::cin >> chY;问题是cin将返回您输入的字符的ascii代码;'0'=48;要获得整数值,只需减去'0':
std::cin >> chX;
std::cin >> chY;
chX -= '0';
chy -= '0';https://stackoverflow.com/questions/20107059
复制相似问题