Aprovecha el precio especial.

Antes:$249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

14d

16h

34m

08s

1

21 BLACKJACK....Aunque con unas leves diferencias ¡Inténtalo!

¡Hola! En esta ocasión realizaremos un pequeño proyecto, el cual permitirá conocer apropiadamente el uso de los ciclos for, while y las condiciones if.
Trataremos de abordar todo desde la perspectiva de un juego de 21 Blackjack.

Las condiciones para este juego son bastante simples:

  1. El programa dará cartas aleatorias a la mesa y al jugador
  2. Si el jugador obtiene un As y es mayor a 21, se le restarán 10
  3. La combinación más cercana a 21 gana la partida
  • Si revisas la idea del proyecto, es claro que nos solicita algo importante, como lo es “aleatorio”, para esto importaremos la librería “random”
import random
  • Seguido, utilizaremos un diccionario el cual contiene “claves” y “valores”, para decirle a python con cuáles cartas jugaremos.
cartas = {
    "dos": 2,
    "tres": 3,
    "cuatro": 4,
    "cinco": 5,
    "seis": 6,
    "siete": 7,
    "ocho": 8,
    "nueve": 9,
    "J": 10,
    "Q": 10,
    "K":10,
    "As": 11
}

  • Bien, ahora necesitaremos tener un control sobre el programa, ya que el usuario debe ser capaz de iniciar o finalizar el programa cuando lo desee; para esto usaremos la función “input” y lo transformaremos a entero, para dejarlo en un valor (1 o 0).
menu = int(input("Marque 1 si desea emepezar a jugar 21 BlackJack o 0 si desea salir\n"))

  • Para realizar el proceso iniciaremos con un ciclo While, el cual calculará si el usuario ha marcado 1 o 0
whilemenu > 0:

  • Para que el jugador tenga un indicio de lo que ha ganado y perdido, vamos a establecer una variable que se llame "dinero =50"
    y que de inicio tenga un valor de $50
dinero = 50
  • Ahora bien, mientras el valor del dinero del jugador se mantenga por encima de $0, tendrá la oportunidad de seguir jugando, para esto usaremos nuevamente un ciclo While anidado, debe verse algo así:
whilemenu > 0:
    dinero = 50while dinero > 0:

  • Teniendo esto en cuenta, emepzaremos a escribir la lógica de nuestr porgrama, una para el “crupier” o más conocido como la “casa” y otra para el “jugador”, así que desarrollaremos primero la elección aleatoria de las cartas dentro de nuestro diccionario.

  • Es bueno recordar que, los diccionarios tienen la siguiente estructura {Keys: VALOR}, para nuestro caso usaremos las Keys, y solamente debemos tener dos cartas.

  • Para este caso, es necesario conocer que la función a utilizar es random.sample(datos, 2). Esta función permite obtener una muestra y para nuestro caso, necesitamos dos objetos. Fianlmente, para el caso transformamos estos datos en una lista, para poder trabajar más sencillo.
    #Lógica de Crupier

print("Apuesta de $10")
        mesa = random.sample(list(cartas.keys()),2)
        print(f"Cartas del Crupier: {mesa}")

  • Siguiente, debemos establecer cuánto será la suma de las cartas que tiene la mesa. Pero, tenemos seleccionadas solamente las Keys, para esto debemos acceder a los valores que están ligados a esas Keys. Para esto es debido recordar que, con los corchetes cuadrados podemos acceder a los datos más específicos de un diccionario ejemplo cartas[valor].

  • Para este proceso usaremos el ciclo For, para que recorra toda la lista y sume los datos que se encuentran dentro de ella.

suma_mesa = 0        for carta_m in mesa:
            suma_mesa = suma_mesa + cartas[carta_m]

  • Al obtener la suma de las cartas debemos comparar si dentro de estos datos se encuentra el “As”, el cual puede valer 1 u 11, y validar si la suma es mayor a 21, ya que este es el tope. En caso de que la suma sea mayor a 21, el valor de “As” debe ser de 1, para esto restaremos - 10.
if"As" in mesa and suma_mesa > 21:
            suma_mesa = suma_mesa - 10
        print(f"Suma de las cartas del Curpier: {suma_mesa}")

  • Ahora, aplicaremos la misma lógica para el Jugador.
    #Lógica de Jugador
        jugador = random.sample(list(cartas.keys()),2)
        print(f"Cartas del Jugador: {jugador}")

        suma_Cartas = 0        for carta_j in jugador:
            suma_Cartas = suma_Cartas + cartas[carta_j]

        if"As"in jugador and suma_Cartas > 21:
            suma_Cartas = suma_Cartas - 10
        print(f"Suma de las cartas del Jugador: {suma_Cartas}")

  • Al final desarrollaremos la comparación si, el jugador o la mesa ha ganado el juego, esto dependerá de la mano que tenga mayor valor en la suma. Si el jugador pierde, se le restará del dinero $10, si gana se le sumarán $10 y tendrá la posibilidad de escoger si retirarse o volver a jugar.
if suma_mesa > suma_Cartas:
            print(f"La Casa ha ganado la partida")
            dinero = dinero - 10
            print(f"Su dinero es: {dinero}")
        elif suma_mesa == suma_Cartas:
            print(f"Empate")
            dinero = 50
            print(f"Su dinero es: {dinero}")
        else:
            print(f"El jugador ha ganado la partida")
            dinero = dinero + 10
            print(f"Su dinero es: {dinero}")

        if dinero <= 0:
            print("Te has quedado sin dinero. Gracas por jugar")
            break

	menu = int(input("Marque 1 si desea emepezar a jugar 21 BlackJack o 0 si desea salir\n"))

Escribe tu comentario
+ 2