Как обновить игровое поле?C ++ - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь создать игру в подземелье, и у меня есть этот код для создания игрового поля.Я использую 'F' в качестве конечной точки и 'P' для игрока.

    void Gameboard::CreateGameboard()
{
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10; j++)
        {
         GameGrid[i][j] = 'x';
        }
    }
    cout << "  0 1 2 3 4 5 6 7 8 9 10" << endl;
    cout << " +---------------------+" << endl;
    for (int i = 0; i < 10; i++)
    {
        cout << " " << "|" << GameGrid[i][0];
        for (int j = 0; j < 10; j++)
        {
            if (i == Spawn[0] && j == Spawn[0])
            {
                GameGrid[0][0] = 'P';
            }
            cout << " " << GameGrid[i][j];
        }
        cout << "|" << endl;
    }
    cout << " +---------------------+" << endl;
}

Проблемы, с которыми я сталкиваюсь.'P' помещается в первые два слота платы и не знаю почему.И как мне обновить доску движением игрока?У меня есть класс Player с переменными положения x, y, и я думаю увеличить / уменьшить на основе того, куда они идут.Нужно ли перепечатывать всю доску после каждого движения?

1 Ответ

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

С вашим чертежом доски.

 for (int i = 0; i < 10; i++)
    {
        cout << " " << "|" << ***GameGrid[i][0]***;
        for (int j = 0; j < 10; j++)
        {
            cout << " " << GameGrid[i][j];
        }
        cout << "|" << endl;
    }

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

Что касается вашего второго вопроса, очистка экрана - это именно то, что вам нужно сделать.Если вы используете Windows, то вы можете использовать system ("cls");«очистить» консоль, а затем перерисовать.Я бы порекомендовал поместить чертеж доски и создание доски в разные функции.

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