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.