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 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); }
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); }); }