Implementación de un Simulador de Juego de Dados en Java

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 3,95 KB

A continuación, se presenta el código fuente corregido y estructurado para un sistema de simulación de juegos de azar basado en el lanzamiento de dados, utilizando la lógica de probabilidades y apuestas.

Lógica del Juego: Función gano_la_apuesta

Esta sección del código se encarga de evaluar la suma de los dados y determinar si el resultado es una victoria o una derrota según las reglas establecidas.

public class Juego {

    /**
     * Función que determina si el jugador gana o pierde la apuesta.
     * @param a Valor del primer dado.
     * @param b Valor del segundo dado.
     * @return 1 si gana, 0 si pierde.
     */
    int gano_la_apuesta(int a, int b) {
        int val = 0, val2, falso = 0, verdadero = 1, validador = 0;
        val = a + b;

        // Primero, se comprueba si la suma de los dados corresponde a uno de los dos primeros casos.
        if (val == 7 || val == 11 || val == 2 || val == 12 || val == 3) {
            if (val == 7 || val == 11) {
                // Si se cumple, el jugador gana y se retorna verdadero (1).
                return (verdadero);
            } 
            if (val == 2 || val == 12 || val == 3) {
                // Si se cumple, el jugador pierde y se retorna falso (0).
                return (falso);
            }
        } else {
            // Si no se cumple ninguno de los dos primeros casos, entonces se cumple el tercero.
            do {
                // Se genera un nuevo número mediante lanzamientos aleatorios.
                a = new Random().nextInt(6) + 1; 
                b = new Random().nextInt(6) + 1; 
                val2 = a + b;

                // Se comprueba cualquiera de los dos casos: ganar o perder.
                if (val2 == val || val2 == 7) {
                    validador = 1;
                }
            } while (validador == 0); // El validador cambiará a 1 si se cumple una de las dos condiciones.

            if (val2 == val) {
                // Aquí el jugador gana según la condición del enunciado.
                return (verdadero);
            }
            if (val2 == 7) {
                // Aquí el jugador pierde según el enunciado.
                return (falso);
            }
        }
        return falso;
    }

Gestión de Partidas: Función crear_juego

Esta función permite ejecutar múltiples iteraciones del juego para obtener estadísticas sobre las victorias obtenidas.

    int crear_juego(int c) {
        int numero, numero2, i, cont = 0, gano;
        
        // Bucle que depende de las veces que se quiera jugar.
        for (i = 1; i < c; i++) {
            // Se genera el primer y segundo número aleatorio.
            // (Nota: se pueden utilizar otras funciones para el random).
            numero = new Random().nextInt(6) + 1;
            numero2 = new Random().nextInt(6) + 1;

            // Se llama a la función que determinará si se gana o no.
            // Retorna 0 si se perdió y 1 si se ganó.
            gano = gano_la_apuesta(numero, numero2);

            if (gano == 1) {
                // Si retorna 1 (ganaste), se suma 1 al contador.
                cont++;
            }
        }
        return (cont);
    }

Punto de Entrada: Método main

El inicio del programa gestiona la interacción con el usuario, solicitando la cantidad de juegos y mostrando los resultados finales.

    /* INICIO DEL PROGRAMA */
    public static void main(String args[]) {
        int cant;
        StdOut.println("Ingrese la cantidad de juegos a realizar: ");
        cant = StdIn.readInt();

        // Imprime la cantidad de juegos ganados y llama a la función que los genera.
        StdOut.println("La cantidad de juegos ganados es: " + new Juego().crear_juego(cant));

        int tecla = 0;
        StdOut.println("Pulse una tecla para continuar: " + tecla);
        tecla = StdIn.readInt();
    }
}

Entradas relacionadas: