コード例 #1
0
        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);
        }
コード例 #2
0
        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();
                }
            }
        }