Example #1
0
        //unico handler per occupa e libera tavolo, differenzio il cambio in base allo stato del tavolo cliccato
        private void occupaTavoloToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ToolStripMenuItem  t   = (ToolStripMenuItem)sender;
            ListViewItem       lvi = (ListViewItem)t.GetCurrentParent().Tag;
            LocaleRistorazione r   = LocaleRistorazione.GetInstance();
            Tavolo             tav = (Tavolo)lvi.Tag;

            int index = lvi.ListView.Items.IndexOf(lvi);

            Prenotazione first = getPrenotazione();
            bool         vuota = false;

            if (first == null)
            {
                vuota = true;
            }

            if (!vuota && first.NumeroCoperti <= tav.PostiMax)
            {
                r.Tavoli.ElementAt(index).Stato   = StatoTavolo.Occupato;
                r.Tavoli.ElementAt(index).Numero  = r.Tavoli.IndexOf(r.Tavoli.ElementAt(index)) + 1;
                r.Tavoli.ElementAt(index).Coperti = first.NumeroCoperti;
                r.Tavoli.ElementAt(index).CalcolaTempo.OccupaTavolo();
                r.ListaPrenotazioni.Remove(first);

                MessageBox.Show("Cliente " + first.ToString() + " al " + r.Tavoli.ElementAt(index));
            }
        }
        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");
            }
        }
Example #3
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();
        }
Example #4
0
        public void IlTavoloDeveLanciareUnEccezioneSeLeCoordinateSonoSbagliate()
        {
            //Given
            Tavolo tavolo = new Tavolo(null, null, null);

            //When
            //Then
            Assert.Throws(typeof(InvalidOperationException),
                          () => { tavolo.InterpretaCoordinataCasa("Che fare"); });
        }
        public void IlTavoloDeveEssereInGradoDiInterpretareLeCoordinateDigitateDallUtente()
        {
            //Given
            Tavolo tavolo = new Tavolo(null, null);
            //When
            Coordinata coordinata = tavolo.InterpretaCoordinataCasa("A4");

            //Then
            Assert.Equal(Traversa.Quarta, coordinata.Traversa);
            Assert.Equal(Colonna.A, coordinata.Colonna);
        }
Example #6
0
        private void liberaTavoloToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ToolStripMenuItem  t   = (ToolStripMenuItem)sender;
            ListViewItem       lvi = (ListViewItem)t.GetCurrentParent().Tag;
            LocaleRistorazione r   = LocaleRistorazione.GetInstance();
            Tavolo             tav = (Tavolo)lvi.Tag;

            tav.CalcolaTempo.LiberaTavolo();
            tav.Stato  = StatoTavolo.Libero;
            tav.Numero = r.Tavoli.IndexOf(tav) + 1;
            MessageBox.Show(tav.ToString());
        }
        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);
        }
Example #8
0
        public void TestIlTavoloHaDueGiocatori()
        {
            ITavolo tavolo = new Tavolo(null, null, null);

            tavolo.RiceviGiocatori("Bianco", "Nero");

            IReadOnlyDictionary <Colore, IGiocatore> dict = tavolo.Giocatori;
            IGiocatore bianco = dict[Colore.Bianco];
            IGiocatore nero   = dict[Colore.Nero];

            Assert.Equal(2, dict.Count);
            Assert.Equal(1, dict.Where(colore => colore.Key == Colore.Bianco).Count());
            Assert.Equal(1, dict.Where(colore => colore.Key == Colore.Nero).Count());
            Assert.Equal("Bianco", bianco.Nome);
            Assert.Equal("Nero", nero.Nome);
        }
Example #9
0
        public void IlTavoloProclamaVittoriaPerAltroSeScadeIlTempoMossa()
        {
            //Given
            Tavolo tavolo = new Tavolo(new Scacchiera(), new Orologio(TimeSpan.FromMilliseconds(1000)), new BloccoNote());

            //When
            tavolo.RiceviGiocatori("Bruno Liegi Bastonliegi", "Ennio Annio");
            tavolo.AvviaPartita();
            //Then
            //Il colore della Vittoria sarà Nero, perchè inizia sempre il bianco a giocare
            tavolo.Vittoria += (object sender, Colore colore) => {
                Assert.Equal(colore, Colore.Nero);
                vittoriaRichiamata = true;
            };
            Thread.Sleep(TimeSpan.FromMilliseconds(2000));
            Assert.True(vittoriaRichiamata);
        }
        private static async void RecuperaPartita(int id)
        {
            using (DataBase db = new DataBase()) {
                Tavolo tavolo = await db
                                .Tavoli
                                .Include(t => t.Orologio)
                                .Include(t => t.Mosse)
                                .Where(t => t.Id == id)
                                .SingleAsync();

                Console.WriteLine($"tempo bianco: {tavolo.Orologio.TempoResiduoBianco}");
                Console.WriteLine($"tempo nero: {tavolo.Orologio.TempoResiduoNero}");
                foreach (Mossa mossa in tavolo.Mosse)
                {
                    Console.WriteLine(mossa.Valore);
                }
            }
        }
Example #11
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);
        }
Example #12
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);
            });
        }