Example #1
0
        public bool CalculatePath()
        {
            iaVehicule.ClearBuffer();
            if (iaVehicule.Circuit.Patients.Count > 0 || iaVehicule.Patients > 0)
            {
                if (iaVehicule.Patients >= iaVehicule.MAX_PATIENTS)
                {
                    List <Point> chemin = ia.ComputeDijkstra(iaVehicule.Position, iaVehicule.Circuit.Hopitaux[0]);

                    ia.AddToIABuffer(chemin);
                    PaintPath(chemin);
                    return(true);
                }
                else
                {
                    List <Point> chemin = ia.ComputeDijkstra(iaVehicule.Position, ia.FindClosestPatient(NXTVehicule.ERROR));

                    if (iaVehicule.Patients > 0)
                    {
                        List <Point> cheminHopital = ia.ComputeDijkstra(iaVehicule.Position, ia.FindClosestHopital());
                        chemin = chemin.Count >= cheminHopital.Count ? chemin : cheminHopital;
                    }

                    ia.AddToIABuffer(chemin);
                    PaintPath(chemin);
                    return(true);
                }
            }

            return(false);
        }