BarajaEspanola.Program.Main C# (CSharp) Method

Main() static private method

static private Main ( Array args ) : void
args Array
return void
        static void Main(string[] args)
        {
            Console.WriteLine("Programa para generar la baraja española");
            Console.Write("Valores de 48 cartas... ");

            string[] palos = { "oros", "copas", "espadas", "bastos" };
            string[] valores = {
                            "uno",
                            "dos",
                            "tres",
                            "cuatro",
                            "cinco",
                            "seis",
                            "siete",
                            "ocho",
                            "nueve",
                            "sota",
                            "caballero",
                            "rey"};

            Carta[] Baraja = new Carta[palos.Length * valores.Length];

            //aqui inicializamos la baraja con palos y valores definidos
            int contadorCartas = 0;

            while (contadorCartas < Baraja.Length)
            {
                for (int contadorPalos = 0; contadorPalos < palos.Length; contadorPalos++)
                {
                    for (int contadorValores = 0; contadorValores < valores.Length; contadorValores++)
                    {
                        Baraja[contadorCartas] = new Carta();
                        Baraja[contadorCartas].Palo = palos[contadorPalos];
                        Baraja[contadorCartas].Valor = valores[contadorValores];

                        contadorCartas++;
                    }
                }
            }

            Console.WriteLine("Baraja inicializada!\n\n");
            int numeroCarta = 1;


            //Aqui podemos consultar que carta hay en una posición
            do
            {
                try
                {
                    Console.Write("Ingresa un número entre 1 y 48 o 0 para salir: ");
                    numeroCarta = int.Parse(Console.ReadLine()!);

                    if (numeroCarta >= 1 && numeroCarta <= 48)
                        Console.WriteLine($"La carta No. {numeroCarta}, es {Baraja[numeroCarta - 1].Valor} de {Baraja[numeroCarta - 1].Palo}");
                    else
                        if (numeroCarta != 0)
                        Console.WriteLine("Ingresaste un número fuera del rango. Intenta nuevamente!\n\n");

                }
                catch (FormatException error)
                {
                    Console.WriteLine("Ingresaste un dato no numérico. Intenta nuevamente!");
                    Console.WriteLine($"Error: {error.Message} \n\n");
                }
            }
            while (numeroCarta != 0);

            Console.WriteLine("Fin de la visualización individual.");

            Console.WriteLine("\n\nBaraja ordenada queda asi:");
            VisualizaBaraja(Baraja);

            // un "algoritmo" para desordenar el arreglo
            Random aleatorio = new Random();
            Carta cartaTemporal;
            int posicionAleatoria;

            for (int i = 0; i < Baraja.Length; i++)
            {
                posicionAleatoria = aleatorio.Next(Baraja.Length);

                cartaTemporal = Baraja[posicionAleatoria];
                Baraja[posicionAleatoria] = Baraja[i];
                Baraja[i] = cartaTemporal;
            }

            Console.WriteLine("\nLa baraja ha sido mezclada!");

            //Aqui buscamos donde quedaron las cartas de un valor específico
            string valorCarta = "oro";
            bool quieroSalir = false;

            Console.WriteLine("\nVerifica donde quedaron las cartas de un valor específico:");

            do
            {
                Console.Write("\n\nEscribe un valor de carta o 'ninguno' para salir: ");
                valorCarta = Console.ReadLine()!.ToLower();
                if (valorCarta == "" || valorCarta == "ninguno")
                    quieroSalir = true;

                if (ValidarValor(valorCarta, valores))
                {
                    for (int i = 0; i < Baraja.Length; i++)
                        if (Baraja[i].Valor == valorCarta)
                            Console.WriteLine($"Posicion: {i + 1}, es {Baraja[i].Valor} de {Baraja[i].Palo}");
                }
                else
                    if (!quieroSalir)
                    Console.WriteLine("Ingresaste un valor de carta inválido. Intenta nuevamente! \n");

            } while (!quieroSalir);

            Console.WriteLine("Ejecución Finalizada!");
        }