Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

01 Desafío: construyendo una nueva aplicación

import java.util.Scanner; import java.util.ArrayList; import java.util.List; import java.util.Random;

    public class Blackjack {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            Random random = new Random();

            //Usamos un array para almacenar las cartas que le sale a cada jugador.
            List<Integer> jugador = new ArrayList<>();
            List<Integer> banca = new ArrayList<>();

            //Simmulamos 2 cartas para cada jugador.
            jugador.add(darCarta(random));
            jugador.add(darCarta(random));
            banca.add(darCarta(random));
            banca.add(darCarta(random));

            System.out.println("Tus cartas: " + jugador + " (Total: " + sumarCartas(jugador) + ")");
            System.out.println("Carta visible de la banca: " + banca.get(0));
            
            //Mientras el jugador tenga menos de 21 puntos.
            while (sumarCartas(jugador) < 21) {
                System.out.print("¿Quieres otra carta? (s/n): ");
                String respuesta = scanner.next();
                if (respuesta.equalsIgnoreCase("s")) {
                    jugador.add(darCarta(random));
                    System.out.println("Tus cartas: " + jugador + " (Total: " + sumarCartas(jugador) + ")");
                } else {
                    break;
                }
            }

            int totalJugador = sumarCartas(jugador);
            if (totalJugador > 21) {
                System.out.println("¡Has perdido! Te has pasado de 21.");
            } else {
                while (sumarCartas(banca) < 17) {
                    banca.add(darCarta(random));
                }

                int totalBanca = sumarCartas(banca);
                System.out.println("Cartas de la banca: " + banca + " (Total: " + totalBanca + ")");

                // Señalamos los resultados. 
                if (totalBanca > 21 || totalJugador > totalBanca) {
                    System.out.println("¡Has ganado!");
                } else if (totalJugador < totalBanca) {
                    System.out.println("La banca gana.");
                } else {
                    System.out.println("Empate.");
                }
            }

            scanner.close();
        }
        // Simulación de cartas del 1 al 10
        public static int darCarta(Random random) {
            return random.nextInt(10) + 1;
        }

        public static int sumarCartas(List<Integer> cartas) {
            int total = 0;
            for (int carta : cartas) {
                total += carta;
            }
            return total;
        }
    }
1 respuesta
solución!

¡Hola, Anthony, espero que estés bien!

Gracias por compartir tu código. Parece que estás trabajando en un juego de Blackjack en Java, ¡qué emocionante! Tu código está bien estructurado y parece que estás manejando correctamente la lógica básica del juego. Sin embargo, hay algunas áreas que podrías revisar o mejorar:

  1. Método darCarta: Actualmente, estás simulando cartas del 1 al 10, lo cual está bien para simplificar el juego. Sin embargo, en un juego de Blackjack real, también tienes cartas como J, Q, K que generalmente valen 10 puntos y el As que puede valer 1 u 11. Podrías considerar expandir esta lógica si deseas hacer el juego más realista.

  2. Manejo del As: Si decides implementar el As, necesitarás una lógica para decidir si cuenta como 1 o 11, dependiendo del total actual del jugador o la banca.

  3. Comentarios y Limpieza: Aunque tus comentarios son claros, asegúrate de que el código esté bien organizado y fácil de seguir. Esto te ayudará a ti y a otros a entender el código más fácilmente en el futuro.

  4. Pruebas y Errores: Asegúrate de probar el juego varias veces para verificar que la lógica funciona correctamente en todos los casos posibles, como cuando el jugador o la banca obtiene exactamente 21 puntos.

Aquí tienes un ejemplo de cómo podrías ajustar el método darCarta para incluir cartas con valor 10 (J, Q, K):

public static int darCarta(Random random) {
    int carta = random.nextInt(13) + 1; // Genera un número entre 1 y 13
    if (carta > 10) {
        return 10; // J, Q, K valen 10
    }
    return carta;
}

Espero que estas sugerencias te sean útiles y te ayuden a mejorar tu aplicación. ¡Sigue adelante con tu proyecto!

Espero haber ayudado y buenos estudios!