Ejemplo n.º 1
0
        /// <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**********************************");
        }
Ejemplo n.º 2
0
 private void CrearBaraja()
 {
     Baraja = new Baraja(13);;
 }