首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阵列在Tic脚趾的表现不像预期的那样?

阵列在Tic脚趾的表现不像预期的那样?
EN

Stack Overflow用户
提问于 2013-11-20 21:09:07
回答 3查看 111关注 0票数 0

是我做的!...almost。

守则:

代码语言:javascript
复制
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;
}

我的问题是:

代码语言:javascript
复制
//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

我遗漏了什么吗?也许问题就在代码的其他地方?(如果问题太简单,我会事先道歉--也许我喝了太多咖啡。)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-20 21:20:22

这只是一个小错误--您将chX和chY定义为char,如果用户输入例如' 1 ',它是‘1’的ASCII代码,而不是整数值1。

只需将声明更改为

代码语言:javascript
复制
  int chX, chY;

而且它应该能工作。

票数 3
EN

Stack Overflow用户

发布于 2013-11-20 21:35:54

正确地将chY和chX从chars更改为int,因为这是数组索引的方式。

然后在输入代码中使用这个

代码语言:javascript
复制
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类型的第二个数组板,这样您就可以检查玩家是否更容易获胜了。

票数 0
EN

Stack Overflow用户

发布于 2013-11-20 22:06:50

代码语言:javascript
复制
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':

代码语言:javascript
复制
  std::cin >> chX; 
    std::cin >> chY;
    chX -= '0';
    chy -= '0';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20107059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档