/// <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); }
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)); } }
public abstract double ObtenirCout(Noeud noeudEvalue);
// Méthodes abstrates, donc à surcharger obligatoirement avec override // dans une classe fille public abstract bool EstEgal(Noeud noeudEvalue);
public void Parent(Noeud valeur) { parent = valeur; valeur.enfants.Add(this); }
protected List <Noeud> enfants; // Nœuds Enfants public Noeud() { parent = null; enfants = new List <Noeud>(); }
/// <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); }
/// <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)); }