Ejemplo n.º 1
0
        private static async void EseguiPartita()
        {
            using (DataBase db = new DataBase()) {
                await db.Database.EnsureCreatedAsync();

                Tavolo   tavolo   = new Tavolo();
                Orologio orologio = new Orologio();
                tavolo.Orologio = orologio;

                Mossa mossa1 = new Mossa();
                mossa1.Valore = "A2 A3";
                mossa1.Tavolo = tavolo;

                Mossa mossa2 = new Mossa();
                mossa2.Valore = "A1 H1";
                mossa2.Tavolo = tavolo;

                db.Add(mossa1);
                db.Add(mossa2);

                await db.SaveChangesAsync();

                Console.WriteLine("Dati inseriti");
            }
        }
Ejemplo n.º 2
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();
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            IOrologio orologio = new Orologio();

            orologio.Accendi();
            Console.WriteLine("Avvio il timer e mi metto in attesa per 2 secondi...");
            orologio.Avvia();
            Thread.Sleep(2000); //Il tempo di attesa va indicato in millisecondi
            Console.WriteLine($"Il tempo residuo e' di: {orologio.TempoResiduoGiocatore1}");
            Console.ReadKey();
        }
Ejemplo n.º 4
0
        public void AccendendoloITempiResiduiDevonoEssereDi5Minuti()
        {
            //Given
            IOrologio orologio1 = new Orologio();

            //When
            orologio1.Accendi();
            //Then
            Assert.Equal(orologio1.TempoIniziale, orologio1.TempoResiduoBianco);
            Assert.Equal(orologio1.TempoIniziale, orologio1.TempoResiduoNero);
        }
Ejemplo n.º 5
0
        public void QuandoAvvioSenzaAccendereDeveVerificarsiUnEccezione()
        {
            //Given
            IOrologio orologio1 = new Orologio();

            //When

            //Then
            Assert.Throws(typeof(InvalidOperationException), () => {
                orologio1.Avvia();
            });
        }
Ejemplo n.º 6
0
        static void Main(string[] args)
        {
            //SimpleXUnitRunner.SimpleXUnit.RunTests();
            IOrologio orologio = new Orologio(TimeSpan.FromSeconds(5));

            //orologio.TempoScaduto += notificaSconfitta;


            orologio.Accendi();
            orologio.Avvia();
            Console.ReadKey();
        }
Ejemplo n.º 7
0
        static void Main(string[] args)
        {
           // SimpleXUnitRunner.SimpleXUnit.RunTests();
           IOrologio orologio = new Orologio();
           orologio.Accendi();
           orologio.Avvia();
           orologio.TempoScaduto += NotificaSconfitta;
            Console.ReadKey();


            //La sottoscrizione all'evento TempoScaduto è stata spostata
            //in un test in OrologioTest.cs (vedi in fondo al file, riga 180)
        }
Ejemplo n.º 8
0
        public void QuandoSiAvviaAlloraIlTempoDeveAvanzarePerBianco()
        {
            //Given
            IOrologio orologio1 = new Orologio();

            orologio1.Accendi();
            //When
            orologio1.Avvia();
            Thread.Sleep(attesa);
            //Then
            Assert.InRange(orologio1.TempoResiduoBianco,
                           orologio1.TempoIniziale - attesa - tolleranza,
                           orologio1.TempoIniziale - attesa);
        }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            //SimpleXUnitRunner.SimpleXUnit.RunTests();

            IOrologio orologio = new Orologio(TimeSpan.FromSeconds(5));

            //L'evento va sottoscritto subito dopo aver creato l'oggetto
            orologio.TempoScaduto += (sender, colore) => {
                Console.WriteLine($"Il giocatore {colore} ha perso la partita, secondo l'orologio {sender}!");
            };
            orologio.Accendi();
            orologio.Avvia();

            Console.ReadKey();
        }
        public void AllAvvioDellaPartitaDeveEsserePredispostaUnaScacchieraELOrologioAvviato()
        {
            //Given
            IScacchiera scacchiera = new Scacchiera();
            IOrologio   orologio   = new Orologio();
            ITavolo     tavolo     = new Tavolo(scacchiera, orologio);

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

            //Then
            Assert.NotEqual(null, tavolo.Scacchiera);
            Assert.NotEqual(null, tavolo.Orologio);
            Assert.False(orologio.InPausa);
        }
Ejemplo n.º 11
0
        public void QuandoInPausaIlTempoNonDeveAvanzare()
        {
            //Given
            IOrologio orologio1 = new Orologio();

            orologio1.Accendi();
            orologio1.Avvia();
            Thread.Sleep(attesa);
            //When
            orologio1.Pausa();
            TimeSpan primaLettura = orologio1.TempoResiduoBianco;

            Thread.Sleep(attesa);
            //Then
            Assert.Equal(primaLettura, orologio1.TempoResiduoBianco);
        }
Ejemplo n.º 12
0
        public void QuandoIlTempoDiUnGiocatoreScendeAZeroDeveEssereSollevatoTempoScaduto()
        {
            //Given
            IOrologio orologio1 = new Orologio(TimeSpan.FromMilliseconds(50));

            orologio1.Accendi();
            orologio1.Avvia();
            bool invocato = false;

            orologio1.TempoScaduto += (sender, arg1) => {
                invocato = true;
            };
            //When
            Thread.Sleep(200);
            //Then
            Assert.True(invocato);
        }
Ejemplo n.º 13
0
        public void QuandoBiancoPassaIlTurnoIlTempoAvanzaPerNero()
        {
            //Given
            IOrologio orologio1 = new Orologio();

            orologio1.Accendi();
            orologio1.Avvia();
            //When
            orologio1.FineTurno();
            Thread.Sleep(attesa);
            //Then
            Assert.InRange(orologio1.TempoResiduoBianco,
                           orologio1.TempoIniziale - tolleranza,
                           orologio1.TempoIniziale);
            Assert.InRange(orologio1.TempoResiduoNero,
                           orologio1.TempoIniziale - attesa - tolleranza,
                           orologio1.TempoIniziale - attesa);
        }
Ejemplo n.º 14
0
        public void SulResetSiRicominciaDalTempoIniziale()
        {
            //Given
            IOrologio orologio1 = new Orologio();

            orologio1.Accendi();
            orologio1.Avvia();
            Thread.Sleep(attesa);
            orologio1.FineTurno();
            Thread.Sleep(attesa);
            orologio1.FineTurno();
            Thread.Sleep(attesa);
            //When
            orologio1.Reset();
            Thread.Sleep(1);
            //Then
            Assert.Equal(orologio1.TempoResiduoBianco, orologio1.TempoIniziale);
            Assert.Equal(orologio1.TempoResiduoNero, orologio1.TempoIniziale);
        }
Ejemplo n.º 15
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);
        }
Ejemplo n.º 16
0
        internal void SyncroOrarioColServer()
        {
            DateTime orarioMio       = DateTime.Now;
            DateTime orarioDelServer = fpClient.GetOrario();

            if (Math.Abs((orarioDelServer - orarioMio).TotalSeconds) > 5)
            {
                try {
                    Orologio.Set(orarioDelServer);
                    _giornale.Info(String.Format("Orologio del mio sistema = {0} ; Orologio del server {1}. Effettuata sincronizzazione", orarioMio, orarioDelServer));
                } catch (Exception ee) {
                    _giornale.Error("Syncro orologio server", ee);
                }
            }
            else
            {
                _giornale.Info("Orologio di sistema già sincronizzato con quello del sever. Non faccio nulla");
            }
        }
Ejemplo n.º 17
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);
            });
        }
Ejemplo n.º 18
0
        public void QuandoIlTempoRiprendeSoloBiancoAvanza()
        {
            //Given
            IOrologio orologio1 = new Orologio();

            orologio1.Accendi();
            orologio1.Avvia();
            orologio1.Pausa();
            TimeSpan primaLetturaBianco = orologio1.TempoResiduoBianco;
            TimeSpan primaLetturaNero   = orologio1.TempoResiduoNero;

            //When
            orologio1.Avvia();
            Thread.Sleep(attesa);
            //Then
            Assert.InRange(orologio1.TempoResiduoBianco,
                           primaLetturaBianco - attesa - tolleranza,
                           primaLetturaBianco - attesa);
            //Assert.Equal(primaLetturaNero, orologio1.TempoResiduoNero);
            Assert.True(primaLetturaNero == orologio1.TempoResiduoNero);
        }
Ejemplo n.º 19
0
        public void TempoScadutoDeveNotificareTuttiISuoiSottoscrittori()
        {
            //Given
            IOrologio orologio = new Orologio(TimeSpan.FromMilliseconds(50));

            orologio.Accendi();
            orologio.Avvia();

            orologio.TempoScaduto += NotificaSconfitta;
            //Oltre che sottoscrivere un evento con un metodo, posso anche indicare una lambda expression
            orologio.TempoScaduto += (sender, colore) => {
                sottoscrittoriInvocati++;
            };
            //When
            Thread.Sleep(TimeSpan.FromMilliseconds(200));
            //Then
            //Mi aspetto che vengano invocati entrambi i metodi che ho sottoscritto all'evento
            //1. Il metodo NotificaSconfitta definito in questa classe
            //2. La lambda expression (che è un metodo anonimo)
            Assert.Equal(2, sottoscrittoriInvocati);
        }
Ejemplo n.º 20
0
        static void Main(string[] args)
        {
            //SimpleXUnitRunner.SimpleXUnit.RunTests();

            IOrologio orologio = new Orologio(TimeSpan.FromSeconds(5));


            orologio.Accendi();
            orologio.Avvia();

            orologio.TempoScaduto += NotificaSconfitta;

            //Oltre che sottoscrivere un evento con un metodo, posso anche indicare una lambda expression
            EventHandler <Colore> notificaSconfitta = (sender, colore) => {
                Console.WriteLine($"(Dalla lambda expression): Il giocatore {colore} ha perso la partita, secondo l'orologio {sender}!");
            };

            orologio.TempoScaduto += notificaSconfitta;



            Console.ReadKey();
        }