Ejemplo n.º 1
0
        /// <summary>
        /// Permet d’obtenir le coût d’un déplacement
        /// </summary>
        /// <param name="noeudEvalue">Nœud vers lequel on se déplace</param>
        /// <returns>Coût du déplacement</returns>
        public override double ObtenirCout(Noeud noeudEvalue)
        {
            // S’il s’agit d’un déplacement, on a 1 dans tous les cas
            int cout = 1;

            // Si le chariot va dans une direction différente
            if (this.nom.Orientation != noeudEvalue.nom.Orientation)
            {
                cout += 3;

                // S’il fait demi-tour
                if (this.nom.Orientation % 2 == noeudEvalue.nom.Orientation % 2)
                {
                    cout += 3;
                }
            }

            return(cout);
        }
Ejemplo n.º 2
0
        public void InsererNoeudDansOuverts(Noeud nouveauNoeud)
        {
            // Insertion pour respecter l’ordre du coût total le plus petit au plus grand
            if (this.noeudsOuverts.Count == 0)
            {
                noeudsOuverts.Add(nouveauNoeud);
            }

            else
            {
                Noeud N      = noeudsOuverts[0];
                bool  trouve = false;
                int   i      = 0;
                do
                {
                    if (nouveauNoeud.TotalCout < N.TotalCout)
                    {
                        noeudsOuverts.Insert(i, nouveauNoeud);
                        trouve = true;
                    }
                    else
                    {
                        i++;
                        if (noeudsOuverts.Count == i)
                        {
                            N = null;
                            noeudsOuverts.Insert(i, nouveauNoeud);
                        }
                        else
                        {
                            N = noeudsOuverts[i];
                        }
                    }
                }while ((N != null) && (trouve == false));
            }
        }
Ejemplo n.º 3
0
 public abstract double ObtenirCout(Noeud noeudEvalue);
Ejemplo n.º 4
0
 // Méthodes abstrates, donc à surcharger obligatoirement avec override
 // dans une classe fille
 public abstract bool EstEgal(Noeud noeudEvalue);
Ejemplo n.º 5
0
 public void Parent(Noeud valeur)
 {
     parent = valeur;
     valeur.enfants.Add(this);
 }
Ejemplo n.º 6
0
        protected List <Noeud> enfants;      // Nœuds Enfants

        public Noeud()
        {
            parent  = null;
            enfants = new List <Noeud>();
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Permet d’obtenir le coût d’un déplacement
 /// </summary>
 /// <param name="noeudEvalue">Nœud vers lequel on se déplace</param>
 /// <returns>Coût du déplacement</returns>
 public override double ObtenirCout(Noeud noeudEvalue)
 {
     return(1);
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Permet de vérifier si 2 nœuds sont identiques
 /// </summary>
 /// <param name="noeudEvalue">Nœud que l’on compare</param>
 /// <returns>true si les nœuds sont les mêmes, false sinon</returns>
 public override bool EstEgal(Noeud noeudEvalue)
 {
     return(this.nom.Egal(noeudEvalue.nom));
 }