Pacman Game - как заставить pacman двигаться автоматически

Я делаю игру pacman, и в данный момент мой pacman движется в пределах разрешенных координат карты, когда я нажимаю клавиши со стрелками вправо, влево, вверх или вниз. Он двигается только тогда, когда я держу ключ нажатым. Мне было интересно, как я мог сделать это так, чтобы он автоматически перемещался по нажатию клавиши, пока он не коснется стены на карте, чтобы мне не нужно было удерживать стрелку вниз.

Это

   if (e.KeyCode == Keys.Down)
        {
            if (coordinates[(pac.xPosition + 16) / 20, (pac.yPosition + 20) / 20].CellType == 'o'
                || coordinates[(pac.xPosition + 16) / 20, (pac.yPosition + 20) / 20].CellType == 'd'
                || coordinates[(pac.xPosition + 16) / 20, (pac.yPosition + 20) / 20].CellType == 'p')
            {

               pac.setPacmanImage();
                pac.setPacmanImageDown(currentMouthPosition);
                checkBounds();

            }

Типы ячеек o, p и d являются единственными ячейками, по которым ему разрешено перемещаться на карте. Эти ячейки прорисовываются в текстовом файле.

Извините, если мне трудно понять, о чем я спрашиваю, но я уверен, что это довольно простое объяснение.

Заранее спасибо.

1 ответ

Решение

Вместо перемещения Pac-Man во время нажатия клавиш используйте нажатие клавиши, чтобы установить направление, и переместите Pac-Man за пределы логики нажатия клавиш.

enum Direction {Stopped, Left, Right, Up, Down};
Direction current_dir = Direction.Stopped;

// Check keypress for direction change.
if (e.KeyCode == Keys.Down) {
    current_dir = Direction.Down;
} else if (e.KeyCode == Keys.Up) {
    current_dir = Direction.Up;
} else if (e.KeyCode == Keys.Left) {
    current_dir = Direction.Left;
} else if (e.KeyCode == Keys.Right) {
    current_dir = Direction.Right;
}

// Depending on direction, move Pac-Man.
if (current_dir == Direction.Up) {
    // Move Pac-Man up
} else if (current_dir == Direction.Down) {
    // Move Pac-Man down
} else if (current_dir == Direction.Left) {
    // Move Pac-Man left
} else if (current_dir == Direction.Right) {
    // You get the picture..
}

Как рекомендует комментарий BartoszKP, вы захотите установить направление в личных переменных Pac-Man.

Другие вопросы по тегам