/// <summary> /// Methode qui calcule une heuristique en fonction de la longueur a parcourir jusqu'a une poussiere. /// </summary> /// <param name="n"> Noeud pour lequel on doit definir une heuristique (Noeud). </param> /// <param name="liste"> L'environnement (sous forme de graphe avec ses differents noeuds) (List<Noeud>) </param> private void LongueurPoussierPlusProche(Noeud n, List <Noeud> liste) { int longueur = 0; int intermediaire; if (n.Contientpoussiere) { n.Heuristique = 0; return; } foreach (Noeud noeud in liste) { if (noeud.Contientpoussiere) { intermediaire = Math.Abs(noeud.X - n.X) + Math.Abs(noeud.Y - n.Y); if (n.Heuristique == -1 || n.Heuristique > intermediaire) { longueur = intermediaire; } } } n.Heuristique = longueur; return; }
/// <summary> /// Methode permettant d'ajouter un voisin au noeud. /// </summary> /// <param name="n"> Le noeud voisin (Noeud). </param> public void AjouterVoisin(Noeud n) { Voisins.Add(n); }
/// <summary> /// Methode qui permet a l'agent de ramasser (d'enlever un bijoux sans l'aspirer). /// </summary> /// <param name="agent"> Noeud ou se trouve l'agent (Noeud). </param> public void Ramasser(Noeud agent) { Thread.Sleep(TpsAction); agent.ContientBijoux = false; Application.Current.Dispatcher.Invoke(this.DelegueSuppressionAgent, new Object[] { agent.Bijoux.Image }); }