示例#1
0
        private static void GiocaPartita() {
            IScacchiera scacchiera = new Scacchiera();
            IOrologio orologio = new Orologio();
            IBloccoNote bloccoNote = new BloccoNote();
            ITavolo tavolo = new Tavolo(scacchiera, orologio, bloccoNote);
            bool partitaInCorso = true;
            tavolo.Vittoria += (sender, colore) => {
                Console.Clear();
                Console.WriteLine($"Vince {tavolo.Giocatori[colore].Nome} ({colore})!");
                partitaInCorso = false;
                tavolo.FinisciPartita();
            };
            Console.Write("Giocatore bianco: ");
            string giocatoreBianco = Console.ReadLine();

            Console.Write("Giocatore nero: ");
            string giocatoreNero = Console.ReadLine();
            tavolo.RiceviGiocatori(giocatoreBianco, giocatoreNero);
            tavolo.AvviaPartita();
            bool errore = false;
            bool automatico = false;
            while (partitaInCorso) {
                Console.Clear();
                Colore coloreDiTurno = orologio.TurnoAttuale;
                Console.WriteLine($"{tavolo.Giocatori[Colore.Bianco].Nome} ({Colore.Bianco}) VS {tavolo.Giocatori[Colore.Nero].Nome} ({Colore.Nero})");
                Console.WriteLine();
                Disegna(scacchiera);
                Console.WriteLine();
                if (errore)
                    Console.ForegroundColor = ConsoleColor.Red;
                Console.Write($"Muove {tavolo.Giocatori[coloreDiTurno].Nome} ({coloreDiTurno}): ");
                Console.ForegroundColor = ConsoleColor.White;
                string mossa;
                if (automatico){
                    mossa = DeterminaMossa(scacchiera, orologio.TurnoAttuale);
                    Console.Write(mossa);
                    Thread.Sleep(200);
                 } else {
                    mossa = Console.ReadLine();
                 }
                if (mossa.Equals("auto", StringComparison.OrdinalIgnoreCase)) {
                    automatico = true;
                    mossa = DeterminaMossa(scacchiera, orologio.TurnoAttuale);
                    Console.Write(mossa);
                    Thread.Sleep(200);
                }

                try{
                    errore = false;
                    tavolo.InserisciMossa(mossa);
                } catch (Exception) {
                    errore = true;
                    automatico = false;
                }
            }
            Console.ReadLine();
        }
示例#2
0
        public void AllAvvioDellaPartitaDeveEsserePredispostaUnaScacchieraELOrologioAvviato()
        {
            //Given
            IScacchiera scacchiera = new Scacchiera();
            IOrologio   orologio   = new Orologio();
            BloccoNote  bloccoNote = new BloccoNote();
            ITavolo     tavolo     = new Tavolo(scacchiera, orologio, bloccoNote);

            //When
            tavolo.RiceviGiocatori("", "");
            tavolo.AvviaPartita();

            //Then
            Assert.NotEqual(null, tavolo.Scacchiera);
            Assert.NotEqual(null, tavolo.Orologio);
            Assert.False(orologio.InPausa);
        }
示例#3
0
        public void pezzoSiSpostaSeMossaValida(string coord1, string coord2)
        {
            //Given
            Scacchiera scacchiera = new Scacchiera();
            Orologio   orologio   = new Orologio();
            BloccoNote bloccoNote = new BloccoNote();
            Tavolo     tavolo     = new Tavolo(scacchiera, orologio, bloccoNote);

            //When
            tavolo.RiceviGiocatori("Fhurer", "Mahatma");
            tavolo.AvviaPartita();
            var coordPartenza    = tavolo.InterpretaCoordinataCasa(coord1);
            var coordFine        = tavolo.InterpretaCoordinataCasa(coord2);
            var pezzoInQuestione = tavolo.Scacchiera[coordPartenza.Colonna, coordPartenza.Traversa].PezzoPresente;

            tavolo.InserisciMossa(coord1 + " " + coord2);
            Assert.Equal(tavolo.Scacchiera[coordPartenza.Colonna, coordPartenza.Traversa].PezzoPresente, null);
            Assert.Equal(tavolo.Scacchiera[coordFine.Colonna, coordFine.Traversa].PezzoPresente, pezzoInQuestione);
        }
示例#4
0
        public void MossaInvalidaLanciaEccezione(string mossaInvalida)
        {
            //Given
            Scacchiera scacchiera = new Scacchiera();
            Orologio   orologio   = new Orologio();
            BloccoNote bloccoNote = new BloccoNote();
            Tavolo     tavolo     = new Tavolo(scacchiera, orologio, bloccoNote);

            //When
            tavolo.RiceviGiocatori("Robespierre", "Rob Van Dam");
            tavolo.AvviaPartita();
            //Simulazione di alcune mosse valide di pedoni
            tavolo.InserisciMossa("A2 A4");
            tavolo.InserisciMossa("A7 A5");
            tavolo.InserisciMossa("B2 B4");
            tavolo.InserisciMossa("A5 B4");
            //Cosa succede per le mosse invalide
            Assert.Throws(typeof(InvalidOperationException), () => {
                tavolo.InserisciMossa(mossaInvalida);
            });
        }