예제 #1
0
        public override Mouvement Jouer(Plateau plateau, CancellationToken annulation)
        {
            aLeTrait   = true;
            plateauTMP = plateau;
            var valide = false;

            mouvement = null;
            Mouvement mouvFinal = null;

            while (!valide)
            {
                mouvement = null;
                aJoue     = new TaskCompletionSource <Mouvement>(annulation);
                annulation.Register(() => aJoue.TrySetCanceled(annulation), true);
                nbDePrisesTmp = 0;

                try
                {
                    mouvFinal = aJoue.Task.Result;
                }
                catch (AggregateException)
                {
                    throw new OperationCanceledException();
                }

                Console.WriteLine("mouv choisi");
                Plateau test = new Plateau(plateau);
                valide = test.Effectuer(mouvFinal, EstBlanc);

                if (!valide)
                {
                    deselectionnerToutesLesCases();
                    deselectionnerToutesLesCases = null;
                    Console.WriteLine("Mouvement invalide");
                }
            }

            deselectionnerToutesLesCases();
            deselectionnerToutesLesCases = null;
            aLeTrait = false;
            return(mouvFinal);
        }
예제 #2
0
 public Mouvement(Mouvement autre)
 {
     Depart = autre.Depart;
     Sauts  = new Queue <Coords>(autre.Sauts);
 }