Как прекратить замену символов символом замены ? - PullRequest
0 голосов
/ 26 мая 2019

Я пишу игру в крестики-нолики с некоторыми дополнительными функциями.

Иногда, когда я пытаюсь напечатать массив символов (это доска), некоторые персонажи заменяются черным ромбом с белым вопросительным знаком ( ) или пустым квадратным квадратом.

Что мне нужно сделать, чтобы решить эту проблему?

void print_board(char board[N][N], int n)
{
    printf("\nCurrent board:\n");

    for (int i = 0; i < n; i++)
    {
        printf("|");

        for (int j = 0; j < n; j++)
        {
            printf("%c|", board[i][j]);
        }

        printf("\n");
    }

    printf("\n");
}

Я ожидаю нормальную доску с х и о, но некоторые из них заменяются на или пустое поле.

void change_board(char board[N][N], int moves_history[TWO][N], int row, int column, int player_index, int turns_num, int board_size)
{
    char player_sign = (player_index == FIRST_PLAYER) ? FIRST_PLAYER_SIGN : SECOND_PLAYER_SIGN;
    board[row][column] = player_sign;
    moves_history[0][turns_num-1] = row;
    moves_history[1][turns_num-1] = column;
    print_board(board, board_size);

    if (did_anyone_win(board,player_index, player_sign,board_size,row,column))
    {
        exit(0);
    }

    player_index = (player_index == FIRST_PLAYER) ? SECOND_PLAYER : FIRST_PLAYER;
    player_turn(board,board_size,turns_num,player_index,moves_history);
}

void Undo(char board[N][N], int moves_history[TWO][N], int undo, int board_size, int turns_num, int player_index)
{
    for (int i = turns_num-TWO; i >= turns_num+undo-1; i--)
    {
        board[moves_history[0][i]][moves_history[1][i]] = EMPTY_CELL;
        moves_history[0][i] = 0;
        moves_history[1][i] = 0;
    }

    print_board(board,board_size);

    player_index = player_index == FIRST_PLAYER ? SECOND_PLAYER : FIRST_PLAYER;
    player_turn(board,board_size,turns_num+undo-1,player_index,moves_history);
}

Это единственные места, где я меняю доску, я не думаю, что здесь есть какие-либо ошибки, но я поместил их только для справки.

1 Ответ

1 голос
/ 30 мая 2019

По вашим именам переменных я заметил, что у вас есть матрица NxN для вашей платы. Но ваша история ходов - это массив размера N. Может ли это быть проблемой?

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