//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"); } }
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(); }
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); }
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); }
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); }
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); } } }
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); }
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); }); }