public void ElEquipoCon200PuntosGanaElJuego() { var juego = new JuegoDomino(); while (!juego.Score.Any(j => j.Sum() >= 200)) { juego.NuevaPartida(); SimularJuego(juego); } Assert.IsTrue(juego.JuegoTerminado); }
private JuegoDomino InicializarJuego(int indiceJuegosPredisenados = 0, int? overwriteTurno = null) { var jugadores = InicializarJugadores(indiceJuegosPredisenados); var juego = new JuegoDomino(jugadores); return juego; }
private void SimularJuego(JuegoDomino juego, int? preferenciaCuadre = null) { while (juego.Jugadores[0].Fichas.Count > 0 && juego.Jugadores[1].Fichas.Count > 0 && juego.Jugadores[2].Fichas.Count > 0 && juego.Jugadores[3].Fichas.Count > 0 && juego.TurnoActual != -1) { var jugador = juego.Jugadores[juego.TurnoActual]; if (juego.Fichas.Count == 0) { juego.JugarFicha(jugador, jugador.Fichas.Contains(new Ficha(6, 6)) ? new Ficha(6, 6) : jugador.Fichas[0]); } else { var fichaInicial = juego.Fichas.First(); var fichaFinal = juego.Fichas.Last(); var fichasValidas = jugador.Fichas.Where(f => fichaInicial.PuedeJugarA(f) || fichaFinal.PuedeJugarB(f)).ToList(); if (fichasValidas.Any()) { if (preferenciaCuadre.HasValue) { if (!fichasValidas.Any(f => f.Valor.Contains(preferenciaCuadre.Value))) { //Si no hay fichas con el vlaor deseado, se juega una de las posibles juego.JugarFicha(jugador, fichasValidas.First()); } else { //Se intenta cuadrar var fichaAJugar = fichasValidas.FirstOrDefault( f => fichaInicial.PuedeJugarA(f) && fichaFinal.PuedeJugarB(f)); if (fichaAJugar != null) { juego.JugarFicha(jugador, fichaAJugar, preferenciaCuadre); } else { //Si no se puede se cuadrar se intenta conservar el fijo (cabeza) var fichasQueNoMatanFijo = fichasValidas .Where(f => !f.Valor.Contains(preferenciaCuadre.Value)) .ToList(); juego.JugarFicha(jugador, fichasQueNoMatanFijo.Any() ? fichasQueNoMatanFijo.First() : fichasValidas.First()); } } } else { juego.JugarFicha(jugador, fichasValidas.First()); } } else { juego.PasarTurno(jugador); } } juego.DibujarTablero(); } }
public void DebenHaberCuatroJugadores() { var juego = new JuegoDomino(); Assert.AreEqual(4, juego.Jugadores.Count, "No hay cuatro jugadores"); }
public void SiElJuegoTerminoNosePuedeJugarOtraPartida() { var juego = new JuegoDomino(); while (!juego.Score.Any(j => j.Sum() >= 200)) { SimularJuego(juego); juego.NuevaPartida(); } juego.NuevaPartida(); }
public void LosJugadoresTienenFichasAsignadasAlComenzarElJuego() { var juego = new JuegoDomino(); Assert.AreEqual(7, juego.Jugadores[0].Fichas.Count); Assert.AreEqual(7, juego.Jugadores[1].Fichas.Count); Assert.AreEqual(7, juego.Jugadores[2].Fichas.Count); Assert.AreEqual(7, juego.Jugadores[3].Fichas.Count); }
public void LosEquiposDebenEstarOrganizadosEnFrentes() { var juego = new JuegoDomino(); Assert.AreEqual(Frentes.Equipo1, juego.Jugadores[0].Equipo); Assert.AreEqual(Frentes.Equipo2, juego.Jugadores[1].Equipo); Assert.AreEqual(Frentes.Equipo1, juego.Jugadores[2].Equipo); Assert.AreEqual(Frentes.Equipo2, juego.Jugadores[3].Equipo); }
public void LaSegundaPartidaPuedeComenzarConCualquierFicha() { var juego = new JuegoDomino(); SimularJuego(juego); juego.NuevaPartida(); juego.Jugadores = InicializarJugadores(0); juego.JugarFicha(juego.Jugadores[juego.TurnoActual], juego.Jugadores[juego.TurnoActual].Fichas[0]); Assert.AreEqual(1, juego.Fichas.Count); }