private bool AvenceUneCase(Nageur nageur) { var current = (ZonePiscine)nageur.Position; var possibles = current.ZoneLimitrophe .OfType <ZonePiscine>(); var next = isAllée ? possibles.MaxBy(zone => zone.Numero) : possibles.MinBy(zone => zone.Numero); if ((isAllée && next.Numero < current.Numero) || (!isAllée && next.Numero > current.Numero)) { isAllée = !isAllée; if (--nombreTour == 0) { nageur.Arriver(); return(false); } } nageur.Position = next; return(true); }
public void Arrivé(Nageur nageur) { Console.WriteLine(nageur.Nom + " est arrivé"); arrivés.Add(nageur); EstFinis = arrivés.Count == Plateau.Personnages.Count(); }