Программа не вызывает одну функцию, но вызывает другие функции - PullRequest
0 голосов
/ 12 декабря 2018

все компилируется, но когда я запускаю программу, кажется, что она полностью пропускает функцию player1 и переходит непосредственно к функции printBoard, когда я запрашиваю переменные, необходимые в player1 перед циклом, она принимает их и по-прежнему пропускаетпетля.У меня ранее была другая функция bool, которая работала просто отлично

#include<iostream> 

using namespace std;

char board[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
void printBoard();
bool player1(char);
int main()
{
    char m;
    char x;
    char o;

    cout << "Welcome to Tic- Tac- Toe!" << endl;
    cout << "Choose your mode: " << endl;
    cout << "1: Player vs Player" << endl;

    cin >> userCommand;

    if (userCommand == 1) {
        cout << "Player vs Player" << endl;
        cout << "Player 1 will use 'X'" << endl;
        cout << "Player 2 will use 'O'" << endl;

        printBoard();

        while (!player1) {
            cout << "Player 1 please enter space: ";
            cin >> m;
        }

        printBoard();
    }
    else {
        cout << "Player vs AI";
    }

    return 0;
}

void printBoard()
{
    cout << board[0] << "|" << board[1] << "|" << board[2] << endl;
    cout << "-"
         << " "
         << "-"
         << " "
         << "-" << endl;
    cout << board[3] << "|" << board[4] << "|" << board[5] << endl;
    cout << "-"
         << " "
         << "-"
         << " "
         << "-" << endl;
    cout << board[6] << "|" << board[7] << "|" << board[9] << endl;
}

bool player1(char m)
{
    if (board[m] == m) {
        board[m] = 'x';
        return true;
    }
    else {
        return false;
    }
}

1 Ответ

0 голосов
/ 12 декабря 2018

Вы не звоните player1, вы проверяете, существует ли она (функция).Вам нужно передать параметры ...

так, чтобы это было:

while(!player1(m))

(То, что у вас все еще хорошо компилируется, потому что обращение к функции по имени является допустимой конструкцией - этообрабатывает его как указатель на саму функцию - и он автоматически конвертируется в bool, где null преобразуется в false, а ненулевое преобразуется в true.)

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