Вначале, он вызывает метод maze.createMaze(). Когда метод обработан, объект maze содержит много других объектов, которые названы в следующей манере: cell1_1, cell1_2, cell1_3 и так далее. Эта схема создания имен является одинаковой для всех плиточных миров, которые вы видели или увидите в этой книге. Затем код ActionScript выполняет вложенный цикл и добавляет все плитки в сцену. Во время каждой итерации код ActionScript просматривает соответствующий объект ячейки в объекте maze и просматривает его свойства east и south. Если east не равен true, то восточная стена должна быть видима и делается видимой. Если south не равно true, то южная стена должна быть видима и делается видимой. Скрипт озабочен лишь восточной и южной стенами в каждой ячейке потому, что мы можем создать лабиринт, основываясь лишь на этой информации. Восточная стена в cell1_1 то же самое, что и западная стена в cell2_1, так что нам лишь нужно отобразить эту стену один раз. Аналогично, южная стена в cell1_1, это то же самое, что северная стена в cell1_2.
Остальной код ActionScript в этом кадре обрабатывает клип, который пользователь передвигает через лабиринт.
Алгоритмы поиска пути
Как я упоминал прежде, алгоритм поиска пути находит некоторый путь между двумя точками. Обычно эти две точки являются центрами двух различных плиток в плиточном мире. (В действительности, я не могу представить реализацию алгоритма поиска пути вне плиточного мира.) Чтобы помочь вам начать изучение алгоритмов поиска пути, существует несколько наиболее популярных типов. (Заметьте: эти алгоритмы выполняют поиск пути полностью в памяти и затем дают полный путь – обычно в форме массива – в качестве заключительного результата.)
Алгоритм, который начинается в первой плитке и случайным образом идет от плитки к плитке (в памяти) до тех пор, пока цель не достигнута.
Алгоритм, который начинается как в начальной плитке, так и в плитке назначения и идет случайным образом, пока пути не пересекутся.
Алгоритм, которые движется в направлении цели из промежуточной точки старта до тех пор, пока не натолкнется на препятствие