Главная » Статьи » Примеры |
Поиск пути
Поиск путиВам надоело делать платформеры и аркады и захотелось сделать игру, над которой хочется поломать голову. Как на счет пошаговой стратегии? Великолепно! Вот только играть придется с самим собой. Почему? Ну представьте - захотели вы заставить вашего противника перемещаться по клеткам, а как это сделать? Как объяснить ему где стены, а где можно пройти? Stencel по умолчанию таких поведений не предлагает. Но не надо отчаиваться, ведь в этот конструктор встроен Actionscript!Не будем сходу ломать голову над сложными стратегиями поведения противника, начнем с простого - с волнового алгоритма поиска пути. Принцип работы этого алгоритма очень прост - от старта во все направления распространяется волна, причем каждая пройденная волной клетка помечается как «пройденная». Волна, в свою очередь, не может проходить через клетки, помеченные как «пройденные» или «непроходимые». Волна движется, пока не достигнет точки финиша или пока не останется непройденных клеток. Если волна прошла все доступные клетки, но так и не достигла клетки финиша, значит, путь от старта до финиша проложить невозможно. Если и это описание показалось сложным, то забежим сразу в конец и взглянем на то, что у нас получилось. (Если нажать пробел, то можно увидеть чем заполнен наш массив) Я решил пускать волну не от старта, а от финиша, на результате это никак не сказывается. Каждая следующая клетка от финиша получает число на единицу больше. Когда все поле заполняется нам остается лишь проверять по одной клетке с каждой из четырех сторон от нашего шарика и передвигать его в клетку с меньшим числом. Обьясню почему пришлось прибегнуть к скриптам вместо блоков. К сожалению я не нашел ни одного блока, который бы выдавал мне информацию о нахождении тайлов на сцене (может быть я просто плохо искал). Вторая проблема - нету блоков с циклом for, хотя это и можно обойти, но при этом простой код превращается в цветное нагромождение. Скажу честно - программист я тот еще, но и Stencyl используется не для серьезных разроботок. Для меня главное что код работает. Все это вы можете посмотреть в исходнике, я же остановлюсь на нескольких моментах подробнее.
В любом случае вы всегда можете доработать все это сами. | ||
Просмотров: 1802
| Теги: |
Всего комментариев: 0 | |