public void Déplacer(Fourmi uneFourmi) { if (uneFourmi.Position == null || uneFourmi.Position.PrendreObjet() is Fourmiliere) { return; } if (uneFourmi.Position.Chemins.Count(x => x.autreBout(uneFourmi.Position).Occupant == null) == 0) { return; } Parcelle uneParcelle = uneFourmi.Position.Chemins.Cast <Tunnel>().Where(x => x.autreBout(uneFourmi.Position).Occupant == null) .ElementAt(rand.Next(0, uneFourmi.Position.Chemins.Count(x => x.autreBout(uneFourmi.Position).Occupant == null))) .autreBout(uneFourmi.Position) as Parcelle; uneFourmi.Position = uneParcelle; if (uneFourmi.Position.PrendreObjet() is Objectif) { // Ne devrait pas arriver si les déplacements n'étaient pas aléatoires return; } if (uneFourmi.Position.PrendreObjet() is Fourmiliere) { uneFourmi.Etat = EtatRentrée.GetInstance; } else if (uneFourmi.DeposerPheromone() > 0) { if (uneFourmi.Position.estVide()) { uneFourmi.Position.AjouterObjet(new Pheromone(uneFourmi.Position)); (uneFourmi.Position.PrendreObjet() as Pheromone).poids += uneFourmi.DeposerPheromone(); } else if (uneFourmi.Position.PrendreObjet() is Pheromone) { (uneFourmi.Position.PrendreObjet() as Pheromone).poids += uneFourmi.DeposerPheromone(); } } }
public void Déplacer(Fourmi uneFourmi) { if (uneFourmi.Position.Chemins.Count(x => x.autreBout(uneFourmi.Position).Occupant == null) == 0) { return; } Parcelle uneParcelle = uneFourmi.Position.Chemins.Cast <Tunnel>().Where(x => x.autreBout(uneFourmi.Position).Occupant == null) .ElementAt(rand.Next(0, uneFourmi.Position.Chemins.Count(x => x.autreBout(uneFourmi.Position).Occupant == null))) .autreBout(uneFourmi.Position) as Parcelle; uneFourmi.Position = uneParcelle; if (uneFourmi.Position.PrendreObjet() is Fourmiliere) { // Ne devrait pas arriver si les déplacements n'étaient pas aléatoires return; } if (uneFourmi.Position.PrendreObjet() is Objectif) { uneFourmi.Strategie = DéplacementRetour.GetInstance; } }