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);
        }
Exemplo n.º 2
0
 public void Arrivé(Nageur nageur)
 {
     Console.WriteLine(nageur.Nom + " est arrivé");
     arrivés.Add(nageur);
     EstFinis = arrivés.Count == Plateau.Personnages.Count();
 }