/// <summary> /// Crea una partida completa /// </summary> private void Jugar() { //Se acaba el juego si se asigna true, hay ganador, solo un jugador tiene menos de jugador.MAXIMOPUNTAJE bool final = false; while (!final) { Console.WriteLine("\t*** Empieza el nuevo juego ***"); //Creo una baraja Baraja = new Baraja(13); //Crea una lista para ver las cartas sobre la mesa List <Carta> cartasEnLaMesa = new List <Carta>(); //La Barajo antes de repartir Baraja.Barajar(); //Por cada jugador //Borramos sus cartas anteriores foreach (var item in jugadores) { item.Cartas = new List <Carta>(); } //Y damos sus cartas for (int i = 0; i < jugadores.Count(); i++) { //por cada jugador se reparte su máximo de cartas for (int sub = 0; sub < Jugador.MAXIMO_CARTAS; sub++) { jugadores.ElementAt(i).Cartas.Add(Baraja.DarCarta()); } } //Ahora los jugadores ya tiene las cartas 7 y sobran 24 en la baraja //Ver los jugadores principales cartasEnLaMesa.Add(Baraja.DarCarta()); //Doy la primera carta del juego //Cuando termido pase a true alguine tiene juego bool terminado = false; while (!terminado) { foreach (var item in jugadores) { if (!item.JugadorMaquina) { Console.WriteLine(item.ToString()); item.VerCartas(); Console.WriteLine("Puntos sumados en la mano: [" + item.PuntosTotalesMano() + "]"); Console.WriteLine("\nLa carta en la mesa es: " + cartasEnLaMesa.ElementAt(cartasEnLaMesa.Count() - 1)); byte opcion; do { Console.WriteLine("¿Tomar carta? [ (1:SI) - (2:NO)[ Robar de la baraja ] -(3)Ordenar por palo"); try { opcion = byte.Parse(Console.ReadLine()); } catch (Exception) { opcion = 3; } if (opcion == 3) { item.Cartas.Sort(); item.VerCartas(); Console.WriteLine("Puntos sumados en la mano: [" + item.PuntosTotalesMano() + "]"); } } while (!(opcion == 1 || opcion == 2)); if (opcion == 1) { //Tomo la carta de la mesa y la cambia por otra, la carta cambiada queda de ultima en la lista de cartas en la mesa Cambiar(cartasEnLaMesa, item.Cartas); } else { cartasEnLaMesa.Add(Baraja.DarCarta());//Doy nueva carta del juego Console.WriteLine("\nLa carta al robar es: " + cartasEnLaMesa.ElementAt(cartasEnLaMesa.Count() - 1)); Console.WriteLine("¿Tomar carta? [ (1:SI) - (2:NO)"); byte opcion2 = 2; try { opcion2 = byte.Parse(Console.ReadLine()); } catch (Exception) { opcion2 = 2; } if (opcion2 == 1) { //Tomo la carta de la mesa y la cambia por otra, la carta cambiada queda de ultima en la lista de cartas en la mesa Cambiar(cartasEnLaMesa, item.Cartas); } } if (item.PuntosTotalesMano() <= 5) { if ((item.Puntos + item.PuntosTotalesMano()) < Jugador.MAXIMO_PUNTAJE && item.SeisCartas()) { item.VerCartas(); Console.WriteLine("Puntos sumados en la mano: [" + item.PuntosTotalesMano() + "]"); Console.WriteLine("\nTienes juego para bajarte, ¿Quieres terminar? 1)Si 2)No"); int bajarse = int.Parse(Console.ReadLine()); if (bajarse == 1) { terminado = true; } } } Console.Clear(); } //Se se termina el juego no se pregunta a más jugadores if (terminado) { break; } } } Console.WriteLine("\n\t*** Terminado el juego.. ***"); //Maximo puntaje de la lista de jugadores int maxPuntos = 0; //Sumamos los puntos foreach (var item in jugadores) { item.SumarPuntos(); if (item.Puntos <= Jugador.MAXIMO_PUNTAJE && item.Vida && maxPuntos < item.Puntos) { maxPuntos = item.Puntos; } } //Verificamos que no paso de 100 si no se quita la vida y se foreach (var item in jugadores) { //Si tiene vida pero sus puntos son mas de 100 o maximopuntaje if (item.Vida && item.Puntos > Jugador.MAXIMO_PUNTAJE) { //Le quitamos la vida item.Vida = false; //Le asignamos el máximo de puntos item.Puntos = (byte)maxPuntos; } } ///si no tiene vida y sus sus puntos son mas de 100 o maximopuntaje //Jugadores a eliminar List <Jugador> eliminados = new List <Jugador>(); foreach (var item in jugadores) { if (!(item.Vida) && item.Puntos > Jugador.MAXIMO_PUNTAJE) { Console.WriteLine("\tEste jugador es eliminado: " + item.Nombre); //lo eliminamos de la lista eliminados.Add(item); } } ///Eliminamos lo jugadores foreach (var item in eliminados) { jugadores.Remove(item); } ///Ver los jugadores y sus cartas foreach (var item in jugadores) { Console.WriteLine(item.ToString()); item.VerCartas(); } if (jugadores.Count() <= 1) { final = true; } Console.ReadKey(); } Console.WriteLine("\t\n**** El ganador es *******"); foreach (var item in jugadores) { Console.WriteLine(item.ToString()); item.VerCartas(); } Console.WriteLine("\t**********************************"); }
private void CrearBaraja() { Baraja = new Baraja(13);; }