Ejemplo n.º 1
0
        public override double GetArcCost(GenericNode N2)
        {
            double    cout = 0;
            NodeTemps Nres = (NodeTemps)N2;

            cout = CalculeDirectionH(Nres);
            return(cout);
        }
Ejemplo n.º 2
0
        public int CalculeDirectionH(NodeTemps N2)
        {
            // This = noeud prcdt


            if (this.direction != N2.direction)
            {
                return(3);
            }
            else
            {
                return(1);
            }
        }
Ejemplo n.º 3
0
        public override bool IsEqual(GenericNode N2)
        {
            NodeTemps NE = (NodeTemps)N2;

            return(NE.posX == posX && NE.posY == posY);
        }
Ejemplo n.º 4
0
        protected override void OnPaint(PaintEventArgs e) // fonction dessinant l'ensemble de la grille et des chemins parcourus par le chariot
        {
            base.OnPaint(e);
            if (tabForme != null)
            {
                for (int i = 0; i < tabEntrepot.GetLength(0); i++)//Pour toute les formes dans tabForme
                {
                    for (int j = 0; j < tabEntrepot.GetLength(1); j++)
                    {
                        FormeRectangle.creationFormeColorée(tabForme[i, j], this);//On dessine la forme avec sa taille et sa couleur passée au préalable dans setGrilleView()
                    }
                }
                foreach (Chariot c in tabChariot)//Pour tout les chariots on les dessine sur la grille
                {
                    int            positionX = 25 * c.posX;
                    int            positionY = 25 * c.posY;
                    FormeRectangle chariot   = new FormeRectangle("black", positionX, positionY);//Un chariot est un carré noir sur la grille.
                    FormeRectangle.creationFormeColorée(chariot, this);
                }
                foreach (Objet o in tabObjet)//Pour tout les objets on les dessine sur la grille
                {
                    int            positionX = 25 * o.posX;
                    int            positionY = 25 * o.posY;
                    FormeRectangle objet     = new FormeRectangle("orange", positionX, positionY);// Un objet est un carré orange sur la grille
                    FormeRectangle.creationFormeColorée(objet, this);
                }
                // Colorie le chemin du noeud initial jusqu'à l'objet

                if (Lres != null)
                {
                    foreach (GenericNode n in Lres)
                    {
                        int positionX = 0;
                        int positionY = 0;
                        if (nodeTemps)    // Si on gère des nodeTemps ou des NodeDistance
                        {
                            NodeTemps node = (NodeTemps)n;
                            positionX = 25 + 25 * node.posX;
                            positionY = 25 + 25 * node.posY;
                        }
                        else
                        {
                            NodeDistance node = (NodeDistance)n;
                            positionX = 25 + 25 * node.posX;
                            positionY = 25 + 25 * node.posY;
                        }


                        FormeRectangle objet = new FormeRectangle("red", positionX, positionY);    //colorie la case de la grille correspondnat à chaque noeud en rouge; le chemin suivi par le chariot apparait tout en rouge
                        FormeRectangle.creationFormeColorée(objet, this);
                        //}
                    }

                    //Colore le chemin retour : de l'objet à une des cases 1 la plus proche de la grille
                    if (bestTrajectoire != null)
                    {
                        foreach (GenericNode n in bestTrajectoire)
                        {
                            int positionX = 0;
                            int positionY = 0;
                            if (nodeTemps)
                            {
                                NodeTemps node = (NodeTemps)n;
                                positionX = 25 + 25 * node.posX;
                                positionY = 25 + 25 * node.posY;
                            }
                            else
                            {
                                NodeDistance node = (NodeDistance)n;
                                positionX = 25 + 25 * node.posX;
                                positionY = 25 + 25 * node.posY;
                            }
                            FormeRectangle objet = new FormeRectangle("purple", positionX, positionY);
                            FormeRectangle.creationFormeColorée(objet, this);
                        }
                    }
                }
            }
        }