Pathfinding 2D jeu Java?
Je suis en train d'écrire un très de base Java jeu basé sur l'idée de Theme Hospital.
Je suis assez nouveau à Java et je suis actuellement étudiante à l'université, ma première année. J'ai fait de Java pour près de deux ans maintenant et à l'extérieur, mais je suis enfin de consacrer mon temps à un projet décent.
J'en suis au stade où j'ai besoin de créer une personne (patient) pour être admis à l'hôpital. Ils doivent aller à la réception, puis le GP du bureau, et ensuite de retour à leur position de départ.
J'ai regardé dans Un* découverte de parcours, mais il semble vraiment compliqué pour moi. Je comprends comment ça marche, je pense, mais je suis pas sûr de la façon de l'implémenter dans mon jeu.
Jusqu'à présent, l'utilisateur peut placer un bureau de réception, et de construire un GP du bureau. Chacun d'eux a un "point d'utilisation" qui sera le lieu où le patient a à faire. Les carrés de la grille ne peut être complète ou pas, il n'y aura pas un autre terrain.
J'hésite à coller un code encore, comme c'est le désordre que j'ai appris beaucoup de nouvelles techniques de le faire avec une interface graphique au cours des derniers mois. Mon plan est d'arriver à l'étape 1, rendant le patient d'aller au bureau de l'office, puis laisser. Une fois que j'ai cela, je vais ranger le code plus.
J'ai vu de nombreuses implémentations de A* et de nombreux types différents. Quelqu'un peut-il me donner un point de départ, je peux travailler avec? Devrais-je tenter de s'adapter à un déjà écrit un ensemble de classes, ou d'essayer d'écrire mon propre à partir de zéro?
OriginalL'auteur Relequestual | 2009-04-09
Vous devez vous connecter pour publier un commentaire.
Vous voulez Un*, c'est la mise en œuvre optimale de la grille en fonction de pathfinding.
Cela peut vous aider:
http://www.cokeandcode.com/main/tutorials/path-finding/
EDIT: Le précédent lien est bon pour les deux comme un implémentables ensemble de classes et de guide pour la personnalisation de la voie de trouver des méthodes pour répondre à votre satisfaction.
OriginalL'auteur FlySwat
C'est le plus instructif de pathfinding post que j'ai vu à ce jour: http://www.ai-blog.net/archives/000152.html
Le lien est en bas.
Le lien est (effectivement) cassé. Il redirige vers la page principale de ce site.
OriginalL'auteur
Le livre L'IA pour les Développeurs de jeux a une très bonne explication d'Un*. En fait, j'allais écrire une mise en œuvre aujourd'hui... si je le fais, je vais jeter le code jusqu'ici.
Le code est fait, il est trop grand pour le mettre ici, donc vous pouvez le saisir à partir de: https://chaos.bcit.ca/svn/public/astar/ (certificat auto-signé, mais le serveur n'a rien fait de mal).
J'ai suivi le pseudo-code dans le livre, pour la plupart, mais j'ai fait tout beaucoup plus orienté-objet, que tout ce que j'ai vu jusqu'à présent par Un*.
Vous avez un Labyrinthe qui se compose de Tuiles. Chaque Tuile a un Endroit et un Obstacle (null si il n'y a pas d'obstacle).
Vous pouvez utiliser un PathFinder (comme AStar) pour trouver le th chemin le plus court entre un début et le point de fin. Vous obtenez un Chemin de retour qui comprend les Tuiles vous avez besoin pour obtenir à partir du début à la fin.
Vous pouvez modifier l'heuristique de calcul en fournissant un autre HeuristicCalculator (l'actuel vérifie juste pour voir si il y a un Obstacle ou non, et les chiffres les plus brefs nombre de Tuiles, vous pouvez ajouter des poids aux différents Obstacles par exemple, si vous n'aimez pas la valeur par défaut).
Le code est sous licence LGPL, donc si vous apportez des modifications et distribuer l'application, vous devez faire les modifications sont disponibles. N'hésitez pas à envoyer des rapports de bogues et correctifs à l'adresse mail de la licence commentaire (qui se trouve dans chaque en-tête).
Je vais (jamais fait) se déplacer à la commenter après les examens, mais je pense que c'est assez simple.
pas de soucis (seuls quelques anciens élèves connaissent mon vrai nom ici, de toute façon 🙂
Aussi longtemps que vous postez quelque chose d'intéressant, large, ou froid, vous aurez des réponses rapides. Des questions techniques précises dans des domaines que pas beaucoup de gens ont de l'expérience avec, ou mal écrits questions avec peu de détails et vous verrez la plus calme du côté de. 🙂
Merci de ne poster votre code, j'aimerais aussi voir cela 🙂
Le lien n'est pas accessible.
OriginalL'auteur TofuBeer
Naturellement, vous en apprendrez beaucoup sur le pathfinding si vous écrivez votre propre mise en œuvre. Mais vous pourrez aussi passer beaucoup de temps à le faire.
Découvrez la JGraphT bibliothèque qui traite avec des graphiques en général, a une belle API et prend en charge plus algorithmes du plus court chemin que juste Un*.
OriginalL'auteur Tomas Andrle
Peut-être que vous avez trouvé ce que vous vouliez, mais voici un lien avec une belle explication d'Un* pathfinding. J'ai eu à mettre en œuvre Un* pour mon jeu en C++, et il m'a beaucoup aidé à comprendre comment il fonctionne.
http://www.abdn.ac.uk/~csc245/teaching/CS1015/practicals/aStarTutorial.htm
OriginalL'auteur Anila