Share on Facebook
Dado que en la final de Gaming.NET seguramente usemos mapas con streams, decidí publicar un mini algoritmo de pathfinding para que los finalistas puedan usarlo asi como está, o (altamente recomedable) lo utilicen de base para el propio.
Aplicación de Test
Esta aplicación no es obligatoria de usar o entender, pero les puede servir para probar modificaciones al algoritmo.
Es simple de usar, solo se carga el mapa a utilizar y se presiona Load.
Luego se puede clickear sobre algún punto en el mapa para setear el punto de inicio, y clickear con el botón derecho para setear el de llegada.
Presionando Start se dibuja sobre el mapa el camino obtenido
Algoritmo
El algoritmo esta embebido en la aplicación de test, pero extraerlo y usarlo dentro del assembly de hoshimi es fácil (se asume algún conocimiento por lo que no se dan instrucciones en exhaustivo detalle)
-
Copiar APoint.cs, AStar.cs, y PathFinderBase.cs dentro del proyecto .NET de Hoshimi (esos tres archivos están en el .zip que se bajan más arriba)
-
Renombrar el namespace de GamingNETPathFinding a lo que se quiera (opcional)
-
Usar
Para usarlo, solo hace falta crear una instancia de la clase AStar, y llamar a GetPath()
APoint start = new APoint(10, 10);
APoint end = new APoint(150, 150);
// Instancia
AStar astar = new AStar(this.Tissue);
// Obtiene el path
Point[] path = astar.GetPath(start, end);
Este ejemplo, genera en la variable path la lista de puntos que se le pasa al MoveTo() de cada bot
Espero que les sirva. No me comprometo 100% a dar soporte, pero pueden dejar un comentario en este post si tienen alguna duda y tal vez los pueda ayudar.
Más información sobre A*