Это довольно широкий вопрос и зависит от дополнительных требований.По сути, я бы выбрал двумерный массив, который будет просто представлять ячейки.Каждая клетка будет содержать:
- Стена
- Стена с односторонним движением (для обозначения ворот, через которые проходят монстры)
- Пустая ячейка
- Ячейка с едой
- "Ячейка телепортации", которая отправит пакмана в другое место (для представления двух ячеек слева и справа)
Монстры и сам Пакман не будут представлены на карте.Вместо этого каждый должен просто иметь свою позицию на карте.
Для этого не требуется C ++, требуется только C, но если вы намеренно хотите решение C ++, вы можете заменить массивы вектором или, в данном случае, вектором векторов.
Как будут двигаться монстры
Если вы хотите достичь точки A из точки B на карте, вы можете использовать любой из множества алгоритмов, которые найдут вам кратчайший путь в пределахкарта - как алгоритм A *.Однако в этом случае вам нужно принять во внимание несколько вещей:
- Сам Пакман всегда в движении, который меняет путь от одного шага к другому.
- Вы не хотите, чтобы все монстры имели одинаковый путь, иначе у вас не будет нескольких монстров, потому что все они будут двигаться одинаково.
- Вы не хотите, чтобы монстры были чрезвычайно эффективнымипотому что тогда игра станет слишком сложной и не будет очень веселой.
Я бы предложил использовать несколько случайных решений, когда монстр достигает «перекрестка», наряду с общим уклоном в сторону самого пакмана.,Поэтому, если монстр находится в точке, где есть 3 направления, таких как восток, запад и север, а пакман находится на севере, я бы принял случайное решение с вероятностью 40% на север, 30% на восток и 30% на запад.