Pathfinding 2D Java-игра?
в настоящее время я пишу очень простую Java-игру, основанную на идее Тема Больнице.
Я довольно новичок в Java и в настоящее время учусь в университете мой первый год. Я занимаюсь Java уже почти два года, но я, наконец, посвящаю свое время достойному проекту.
Я нахожусь на той стадии, когда мне нужно создать человека (пациента), чтобы попасть в больницу. Им нужно пройти в приемную, потом в кабинет врача., а затем вернуться в исходное положение.
Я заглянул в * поиск пути, но мне это кажется очень сложным. Я понимаю, как это работает, я думаю, но не уверен, как реализовать это в моей игре.
до сих пор пользователь может разместить стойку регистрации и построить офис GP. Каждый из них имеет "точку использования", которая будет местом, куда пациент должен добраться. Квадраты сетки могут быть только полными или нет, не будет никакой другой местности.
Я не решаясь вставить какой-либо код, так как это грязно, поскольку я узнал много новых методов работы с GUI за последние несколько месяцев. Мой план состоит в том, чтобы добраться до вехи 1, заставить пациента пойти к столу, затем в офис, а затем уйти. Как только я получу Это, я приведу код в порядок.
Я видел много реализаций A* и много разных типов. Может ли кто - нибудь дать мне отправную точку, с которой я могу работать? Должен ли я попытаться адаптировать уже написанный набор классов или попытаться написать свой собственный нуля?
5 ответов
вы хотите*, это оптимальная реализация для поиска на основе сетки.
Это может помочь вам:
http://www.cokeandcode.com/main/tutorials/path-finding/
EDIT: предшествующая ссылка хороша как для реализуемого набора классов, так и для руководства по настройке методов поиска пути для удовлетворения вашего удовлетворения.
Это самый информативный пост, который я видел на сегодняшний день:http://www.ai-blog.net/archives/000152.html
книги AI для разработчиков игр имеет очень хорошее объяснение a*. Я собиралась сегодня написать реализацию... если я это сделаю, то выброшу код сюда.
код сделан, он слишком большой, чтобы поместить его сюда, поэтому вы можете взять его из:https://chaos.bcit.ca/svn/public/astar/ (самозаверяющий сертификат, но сервер не делает ничего плохого).
я следовал псевдо-коду в книге по большей части, но я сделал все гораздо более объектно-ориентированным, чем все, что я видел до сих пор на*.
У вас есть лабиринт, который состоит из плиток. Каждая плитка имеет местоположение и препятствие (null, если нет препятствия).
вы можете использовать навигатор (например, AStar), чтобы найти кратчайший путь между заданным начальным и конечным местоположением. Вы получаете путь назад, который включает в себя плитки, вам нужно пройти, чтобы добраться от начала до конца.
вы можете изменить эвристический расчет предоставление другого эвристического калькулятора (текущий просто проверяет, есть ли препятствие или нет, и вычисляет кратчайшее количество плиток для прохождения, вы можете добавить вес к различным препятствиям, например, если вам не нравится значение по умолчанию).
код является лицензией под LGPL, поэтому, если вы вносите изменения и распространяете приложение, вы должны сделать изменения доступными. Не стесняйтесь отправлять сообщения об ошибках/исправления на адрес электронной почты в комментарии лицензии (найдено в каждом заголовок.)
Я (никогда не делал), чтобы прокомментировать его после экзаменов, но я думаю, что это довольно прямо вперед.
может быть, вы нашли то, что хотели, но вот ссылка с хорошим объяснением* pathfinding. Мне пришлось реализовать* для моей игры в C++, и это очень помогло мне понять, как это работает.
http://www.abdn.ac.uk/~csc245/teaching/CS1015/practicals/aStarTutorial.htm