C ++ Tic Tac Toe игра не показывает символ X - PullRequest
0 голосов
/ 19 января 2019

Начинающий программист здесь. Попытка сделать игру в крестики-нолики. Пока все работает, кроме символа X не появляется. В цикле for я считаю, что у меня есть проблема, но я не могу найти что-то не так. Пожалуйста, помогите, любая критика высоко ценится. Хорошо и плохо. Спасибо.

void playgame() {
    std::string input;

    while (true) {
        std::cout << "Go player one" << std::endl;
        getline (std::cin, input);
        if (input != " ") {
            char entered = input.c_str ()[0];

            if (entered >= '1' && entered <= '9') {
                int entered_num = entered - 0;
                int index = entered_num - 1;
                int row = index / 3;
                int col = index % 3;
                char grid_position = map[row][col];

                if (grid_position == 'X' || grid_position == 'O') {
                    std::cout << "Space taken. Try again" << std::endl;
                } else {
                    map[row][col] = (char) 'X';
                    break;
                }

            } else {
                std::cout << "Only numbers 1 - 9" << std::endl;
            }
        } else {
            std::cout << "Have to enter something, try again" << std::endl;
        }


    }
}

void generateGrid() {
    int number = 1;

    for (int x = 0; x < GRID_SIZE; x++) {
        for (int y = 0; y < GRID_SIZE; y++) {
            map[x][y] = std::to_string (number).c_str ()[0];
            number += 1;
        }
    }
}

void tictacToeMap() {


    std::cout << std::endl;

    for (int x = 0; x < GRID_SIZE; x++) {
        for (int y = 0; y < GRID_SIZE; y++) {
            std::printf (" %c ", map[x][y]);
        }
        std::cout << std::endl;
    }

}


TicTacToe() {
    generateGrid ();
    while (true) {
        tictacToeMap ();
        playgame ();
    }
}
};


int main() {

    TicTacToe tic;

    return 0;


}

1 Ответ

0 голосов
/ 19 января 2019
            int entered_num = entered - 0;

Должно быть:

            int entered_num = entered - '0';

Чтобы преобразовать '1' в 1, вам нужно вычесть '0' (символ, который мы используем для представления цифры ноль), а не 0 (число ноль).Вычитание нуля ничего не делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...