private int ChariotProche(Colis colis) { // initialisation du chariot que l'on teste : ici le premier du tableau Chariot chariot_choisit = Program.tab_chariot[0]; // on met un cout par défaut très grand double cost = 1000000; Emplacement empColis = new Emplacement(colis._x, colis._y, colis._orientation, colis._hauteur); // on passe en revue tous les chariots du tableau pour voir quel chariot est le plus proche du colis. foreach (Chariot chariot in Program.tab_chariot) { if (!chariot.enLivraison) { Emplacement empChariot = new Emplacement(chariot._x, chariot._y, chariot._orientation, 0); // Calcul du cout théorique du déplacement empChariot.CalculeHCost(empColis); // Comparaison if (empChariot.Estimation() < cost) { chariot_choisit = chariot; cost = empChariot.Estimation(); } } } return(chariot_choisit.Get_cle_chariot() - 1); }
private void Deplacement_chariots() { if (chemin.Count() > 0) { Final_LBL.Text = "Une solution a été trouvée"; double cout = ((Emplacement)chemin[chemin.Count - 1]).GetGCost(); Final_LBL.Text += " avec un cout de " + cout + " secondes"; } else { Final_LBL.Text = "Pas de solution"; } for (int k = 0; k < chemin.Count() - 1; k++) { if (k != chemin.Count() - 1) { System.Threading.Thread.Sleep((int)chemin[k].GetArcCost(chemin[k + 1]) * 100); // todo : ne pas supprimer le premier avec k //On clean la position de depart Emplacement ptsDepart = (Emplacement)chemin[k]; string positionDep = ptsDepart.GetX().ToString() + "." + ptsDepart.GetY().ToString(); Button btn_3 = (Button)this.Controls.Find(positionDep, true)[0]; btn_3.Image = null; btn_3.BackColor = Color.Gold; btn_3.Text = null; btn_3.Refresh(); //On colore la position d'arrivee Emplacement ptsArrivee = (Emplacement)chemin[k + 1]; string positionArr = ptsArrivee.GetX().ToString() + "." + ptsArrivee.GetY().ToString(); Button btn_4 = (Button)this.Controls.Find(positionArr, true)[0]; btn_4.Image = Image.FromFile("../../Images/" + ptsArrivee.Get_orientation() + ".png"); btn_4.Text = Chariot_choisi.Get_cle_chariot().ToString(); btn_4.Refresh(); } } }