Так что в последнее время я много играл в свою камеру и удивляюсь, как призраки, кажется, работают независимо друг от друга. Я думал о том, как это было бы запрограммировано.
Одним из вариантов, о котором я подумал, были темы. Все 4 призрака бегут в своих собственных потоках и каким-то образом находят положение Пакмана. Но, кажется, слишком много работать с четырьмя потоками, и синхронизация будет сложной. Кроме того, Google написал pacman на Javascript, который не поддерживает потоки, поэтому это можно сделать без потоков, и должен быть более простой способ.
Моя вторая мысль была обработчиками событий. Я просто связал событие 'directionChanged', которое pacman сработает, с 4 обработчиками событий, по одному для каждого призрака. Каждый призрак затем решает, какой путь выбрать, чтобы добраться до Пакмана. Это, я думаю, более вероятно, что происходит. Но это может замедлиться, если обработчики событий выполняются синхронно, потому что пути должны вычисляться последовательно, а четвертому призраку потребуется время, чтобы изменить направление, и это может создать видимое отставание (вероятно). Кроме того, призраки запускают событие сами, когда попадают в стену, а их обработчики меняют направление призраков. Но учитывая частоту, с которой pacman меняет направление и четыре призрака отвечают, обработчики событий также кажутся слишком большими.
Я говорю, что приведенных выше идей было бы слишком много, потому что помните, что игра была написана 30 лет назад, когда времени и памяти процессора было мало, поэтому я думаю, что должен быть намного более простой способ.
Кроме того, кажется, что призраки идут разными путями, даже когда Пакман все еще стоит. Все ли призраки используют совершенно разные или оптимизированные по-разному алгоритмы поиска пути?
Мне больше интересно узнать, как все призраки работают на себя одновременно, чем алгоритмы поиска пути, которые они используют. Мысли?