Как кодировать карту для PacMan в C ++ - PullRequest
0 голосов
/ 24 декабря 2010

Может кто-нибудь, пожалуйста, скажите мне, как мне создать карту для PacMan на C ++. Любые предложения по получению m Started .?

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

Ответы [ 2 ]

2 голосов
/ 24 декабря 2010

Это довольно широкий вопрос и зависит от дополнительных требований.По сути, я бы выбрал двумерный массив, который будет просто представлять ячейки.Каждая клетка будет содержать:

  1. Стена
  2. Стена с односторонним движением (для обозначения ворот, через которые проходят монстры)
  3. Пустая ячейка
  4. Ячейка с едой
  5. "Ячейка телепортации", которая отправит пакмана в другое место (для представления двух ячеек слева и справа)

Монстры и сам Пакман не будут представлены на карте.Вместо этого каждый должен просто иметь свою позицию на карте.

Для этого не требуется C ++, требуется только C, но если вы намеренно хотите решение C ++, вы можете заменить массивы вектором или, в данном случае, вектором векторов.

Как будут двигаться монстры

Если вы хотите достичь точки A из точки B на карте, вы можете использовать любой из множества алгоритмов, которые найдут вам кратчайший путь в пределахкарта - как алгоритм A *.Однако в этом случае вам нужно принять во внимание несколько вещей:

  1. Сам Пакман всегда в движении, который меняет путь от одного шага к другому.
  2. Вы не хотите, чтобы все монстры имели одинаковый путь, иначе у вас не будет нескольких монстров, потому что все они будут двигаться одинаково.
  3. Вы не хотите, чтобы монстры были чрезвычайно эффективнымипотому что тогда игра станет слишком сложной и не будет очень веселой.

Я бы предложил использовать несколько случайных решений, когда монстр достигает «перекрестка», наряду с общим уклоном в сторону самого пакмана.,Поэтому, если монстр находится в точке, где есть 3 направления, таких как восток, запад и север, а пакман находится на севере, я бы принял случайное решение с вероятностью 40% на север, 30% на восток и 30% на запад.

0 голосов
/ 11 января 2012

Вот совет:

// 1 = wall
// 0 = no wall

int map[6][6] = {{ 1, 1, 1, 1, 1, 1 },
                 { 1, 0, 0, 0, 0, 1 },
                 { 1, 0, 0, 0, 0, 1 },
                 { 1, 0, 0, 0, 0, 1 },
                 { 1, 0, 0, 0, 0, 1 },
                 { 1, 1, 1, 1, 1, 1 }};
...