Пример #1
0
        public void InserisciMossa(string mossa)
        {
            Coordinata partenza = InterpretaCoordinataCasa(mossa.Substring(0, 2));
            Coordinata arrivo   = InterpretaCoordinataCasa(mossa.Substring(3, 2));

            ///
        }
Пример #2
0
        public void InserisciMossa(string mossa)
        {
            Coordinata partenza     = InterpretaCoordinataCasa(mossa.Substring(0, 2));
            Coordinata arrivo       = InterpretaCoordinataCasa(mossa.Substring(3, 2));
            ICasa      casaPartenza = Scacchiera[partenza.Colonna, partenza.Traversa];
            ICasa      casaArrivo   = Scacchiera[arrivo.Colonna, arrivo.Traversa];

            if (casaPartenza.PezzoPresente == null ||
                casaPartenza.PezzoPresente?.Colore != Orologio.TurnoAttuale ||
                casaArrivo.PezzoPresente?.Colore == Orologio.TurnoAttuale ||
                casaPartenza.PezzoPresente?.PuòMuovere(partenza.Colonna, partenza.Traversa,
                                                       arrivo.Colonna, arrivo.Traversa, Scacchiera.Case) == false
                )
            {
                throw new InvalidOperationException("Mossa non valida");
            }

            Scacchiera.SpostaPezzo(casaPartenza, casaArrivo);
            BloccoNote.ScriviMossa(mossa);
            //Controllo che il re non sia stato mangiato
            Colore coloreControlloSconfitta;

            if (Orologio.TurnoAttuale == Colore.Bianco)
            {
                coloreControlloSconfitta = Colore.Nero;
            }
            else
            {
                coloreControlloSconfitta = Colore.Bianco;
            }
            bool reInVita = Scacchiera.ReInVita(coloreControlloSconfitta);

            if (!reInVita)
            {
                Vittoria.Invoke(Scacchiera, Orologio.TurnoAttuale);
            }
            Orologio.FineTurno();
        }