No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Reto: bug entre ciclos

19/20
Recursos

Aportes 10

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

todavía no veo como salir del juego o cerrar el programa

21 con graficos en unity

En el if donde le ganamos al Platzino le sumo un platzi más y le mando un msj que diga Tienes una vida mas 😄

Esta es ni versión, talvez esta muy largo pero funciona, tiene varias validaciones por si acaso.

//Console.WriteLine("Hello, World!");
            int totalJugador = 0;
            int totalDealer = 0;
            int num = 0;
            int apuesta = 0;
            int platziCoins = 0;
            bool puedeApostar;
            int coinsRestantes=0;
            string seguirApostando;
            string message = "";
            string controlOtraCarta = "";
            string switchControl;

            System.Random random = new System.Random();

            //Blackjack, Juntar 21 pidiendo, en casa de pasarte de 21 pierdes.
            //cartas o en caso de tener menos
            //de 21 igual tener mayor puntuación que el dealer

            do
            {
                Console.WriteLine("===WELCOME AL P L A T Z I N O===");
                Console.WriteLine("¿***Cuántos PlatziCoins deseas?***");
                platziCoins = int.Parse(Console.ReadLine());
                platziCoins = platziCoins +coinsRestantes;

                do
                {
                    do {
                        totalJugador = 0;
                        totalDealer = 0;
                        Console.WriteLine("Tienes " + platziCoins + " platziCoins");
                        Console.WriteLine("***¿Cuantos PlatziCoins deseas apostar?***");
                        apuesta = int.Parse(Console.ReadLine());
                        if (apuesta > platziCoins)
                        {
                            Console.WriteLine("!!!NO TIENES SUFICIENTES CREDITOS!!!");
                            puedeApostar = false;
                        }
                        else
                        {
                            puedeApostar = true;
                        }

                    } while (puedeApostar != true);
                    Console.WriteLine("---Escriba ‘21’ para jugar al 21---");
                    switchControl = Console.ReadLine();
                    if (switchControl == "21")
                    {
                        do
                        {
                            num = random.Next(1, 12);
                            totalJugador = totalJugador + num;
                            Console.WriteLine($"Te salió el número: {num} ");
                            Console.WriteLine("¿Deseas otra carta ?");
                            controlOtraCarta = Console.ReadLine();

                        } while (controlOtraCarta == "Si" ||
                                    controlOtraCarta == "si" ||
                                    controlOtraCarta == "yes");
                    }

                    totalDealer = random.Next(14, 23);
                    Console.WriteLine($"El dealer tiene {totalDealer}");

                    if (totalJugador > totalDealer && totalJugador < 22)
                    {
                        message = "Venciste al dealer, felicidades";
                        platziCoins += apuesta;
                        Console.WriteLine(message);
                    }
                    else if (totalJugador >= 22)
                    {
                        message = "Perdiste vs el dealer, te pasaste de 21";
                        platziCoins -= apuesta;
                        Console.WriteLine(message);
                    }
                    else if (totalJugador <= totalDealer)
                    {
                        message = "Perdiste vs el dealer, lo siento";
                        platziCoins -= apuesta;
                        Console.WriteLine(message);
                    }
                    else
                    {
                        message = "condición no válida";
                    }
                    Console.WriteLine("Tienes " + platziCoins + " creditos");

                    Console.WriteLine("¿DESEAS SEGUIR APOSTANDO?");
                    seguirApostando = Console.ReadLine();
                    
                    coinsRestantes = +platziCoins;
                    Console.Clear();
                    if (platziCoins == 0)
                    {
                        Console.WriteLine("SIN CREDITOS, POR FAVOR COMPRE MAS...");
                        break;
                    }
                } while (seguirApostando == "si" || seguirApostando == "SI");
                Console.WriteLine("¿QUIERES SALIR DEL P L A T Z I N O ?");
                seguirApostando=Console.ReadLine();
                if(seguirApostando == "si" || seguirApostando == "SI")
                {
                    Console.WriteLine("GRACIAS POR JUGAR");
                    Console.ReadKey();
                }
                else
                {
                    Console.Clear();
                }
            } while (seguirApostando == "no" || seguirApostando == "NO");

Lo logé!!!

Para mi la clave fue imprimir en pantalla cada vez que la variable de los creditos se iba derementando y así darme cuenta que el problema estaba en la secuencia del Switch, hay que eliminar el case del menu y llevar lo que esta adentro de él hacia el ciclo for.

Aquí mi proyecto, con algunas modificaciones para evitar errores

System.Random random = new Random();

int coins = 0;
string cart = "";
string des = "";
int player = 0;
int num = 0;
int dealer = 0;

Console.WriteLine("Bienvenido a Platzino");

try
{

    do
    {
        Console.WriteLine("¿Cuántos platzicoins deseas?");
        coins = Convert.ToInt32(Console.ReadLine());

        for (int i = 1; i <= coins; i++)
        {

            do
            {
                Console.WriteLine("Presiona enter para tomar una carta");
                cart = Console.ReadLine();

                num = random.Next(1, 12);
                player = player + num;
                dealer = random.Next(14, 23);

                Console.WriteLine("Tu carta es: " + num);
                Console.WriteLine("Llevas: " + player);

                Console.WriteLine("\n¿Deseas otra carta? \nEscribe 2 para detener.");
                cart = Console.ReadLine();

            } while (cart != "2");

            if (player > dealer && player < 22)
            {
                Console.WriteLine("Ganaste contra el dealer. Obtienes un platzicoin extra\n");
                Console.WriteLine("Jugador: " + player);
                Console.WriteLine("Dealer: " + dealer);
                Console.WriteLine($"Llevas {i} partidas\n");
                coins++;
            }
            else if (player <= dealer)
            {
                Console.WriteLine("Perdiste contra el dealer");
                Console.WriteLine("Jugador: " + player);
                Console.WriteLine("Dealer: " + dealer);
                Console.WriteLine($"Llevas {i} partidas \n");
            }
            else if (player >= 22)
            {
                Console.WriteLine("Perdiste contra el dealer, te pasaste de los 21");
                Console.WriteLine("Jugador: " + player);
                Console.WriteLine("Dealer: " + dealer);
                Console.WriteLine($"Llevas {i} partidas \n");
            }
            player = 0;
        }


        Console.WriteLine("Se terminaron tus platzicoins");

        Console.WriteLine("Quieres volver a jugar? Escribe SI o NO");
        des = Console.ReadLine();

    } while (des == "SI");



}
catch (FormatException)
{
    Console.WriteLine("Ingresó mal un dato. Vuelva a intentarlo");
}

Yo le puse algo equivalente.

<platziCoins++> 

Muy buena la solución propuesta.

Esta es otra:

   i--;