public override void CalculeHCost(Emplacement_Q3 final) { // pour la question 1 : distance de Man if (this.y == final.y) { this.HCost = HCost + (Math.Abs(x - final.x) + Math.Abs(y - final.y)); } else if (this.x == final.x) { this.HCost = HCost + (Math.Abs(x - final.x) + Math.Abs(y - final.y)) + 9; } else { this.HCost = HCost + (Math.Abs(x - final.x) + Math.Abs(y - final.y)) + 6; //Le chariot se reorient et il fait un virage } // pour la question 2 : }
public override void CalculeHCost(Emplacement_Q3 final) { }
// pour les overrides avec l'autre classe public override bool EndState(Emplacement_Q3 final) { return(false); }
public override double GetArcCost(GenericNode N2) { Emplacement_Q3 succ = (Emplacement_Q3)N2; //return (1); if (EndState(succ)) { return(4 * hauteurColis + 10); } else { if (orientation == "Nord") { if (succ.y == this.y - 1) { return(1); } else { return(4); } } else if (orientation == "Sud") { if (succ.y == this.y + 1) { return(1); } else { return(4); } } else if (orientation == "Est") { if (succ.x == this.x + 1) { return(1); } else { return(4); } } else if (orientation == "Ouest") { if (succ.x == this.x - 1) { return(1); } else { return(4); } } else { return(0); } } }
// POUR L'override il était nécessaire de faire une autre fonction qui prennant en paramète // un emplacement pour la question 3 à cause de la duplication recommandée de la classe Emplacement // pour la réalisation des deux questions. public override bool EndState(Emplacement_Q3 final) { return(this.x == final.x && this.y == final.y); }
//Methodes public override bool IsEqual(GenericNode N2) { Emplacement_Q3 E1 = (Emplacement_Q3)(N2); return(E1.x == this.x && E1.y == this.y && E1.orientation == this.orientation); }
public abstract void CalculeHCost(Emplacement_Q3 final);
public abstract bool EndState(Emplacement_Q3 final);