Ver destacados

Practicar la lógica de programación con un juego de azar

Implementación de un juego de azar en Python para aprender a manejar condicionales, bucles e interacción con el usuario
Escrito por
9.4K Visitas  |  Publicado jun 23 2016 13:18
Favorito
Compartir
Comparte esta pagina a tus Amigos y Contactos usando las siguientes Redes Sociales


Esto no es un tutorial como otros, lo único que traigo aquí es un mini juego de azar de interfaz de texto, para que veas un poco su funcionamiento, a continuación te dejo una captura de una partida en la que "gano".

 

 

El juego trata de hacer una apuesta y elegir entre 3 opciones que se dan, acto seguido se desvelará una de las opciones malas (en la que no ganas) y te pedirá que decidas si quieres aumentar la apuesta o cambiar de opción (solo quedan 2, y una es la tuya, por lo que el cambio será automático), para finalmente mostrar el resultado, si ganas tendrás la suma del saldo inicial de créditos y tu apuesta, si pierdes tendrás la resta.

 

Nota
No existe un algoritmo para crear números aleatorios, por lo que nos basamos en crear números pseudo-aleatorios para decidir cuál es la opción ganadora, se hace con las siguientes instrucciones:
random.seed()
ace = random.randrange(3)

 

A continuación os dejo el código:

import io
import random
from encodings.idna import ace_prefix
# coding=<UTF-8>

class juego:

    def mostrar(ele,pos,ace,ch=0):
        aux2 = 0
        if (ele == 0):
                print(".-. .-. .-.")
                print(" 1   2   3 ")     
        elif (ele == 1):
            print(".-. .-. .-.")
            aux  =0
            ya = False
            while aux<=2:
                if (aux == ace or aux == pos or ya):
                    print(" X  ",end="")
                else:
                    print(" Q  ",end="")
                    ya = True
                    aux2 = aux 
                aux += 1  
            print()      
        else:
            aux = 0
            while (aux <= 2):
                if (aux == ace):
                    print(" A  ",end="")  
                else:
                    print(" Q  ",end="") 
                aux += 1                 
            print()
        posi = pos      
        aux = ""
        if (ch == 0):        
            while (posi > 0):
                aux = "    "+aux
                posi-=1
            print(aux+" ^ Elegida")
        return aux2     # Fin mostrar
        
    def eleccion():
        op = 9
        while (op < 0 or op >= 3):
            print("¿Que opción eliges (1,2,3)?") 
            op = int(input()) # genera excepción si no se mete un número
            op -= 1
            if(op < 0 or op >= 3):
                print("Solo puedes elegir del 1 al 3 cómo opción")
        return op
    
    def leerApuesta(creditos):
        error=True
        while error:
            print("Tienes "+str(creditos)+" créditos, ¿cuánto apuestas?")
            apuesta = int(input()) # genera excepción si no se mete un número
            if (apuesta > creditos):
                print("No tienes tantos créditos...")
            elif (apuesta <= 0):
                print("Apuesta no válida...")
            else:
                error = False 
        return apuesta
    
    def cambiarOpcion(aux,op):
        if (aux != 0 and op != 0):
            return 0
        elif (aux != 1 and op != 1):
            return 1
        else: 
            return 2      
    
seguir = 'S'    #EMPIEZA AQUI EL JUEGO
creditos = 100     
while (seguir.lower() =='s') and creditos>0:
    random.seed()
    ace = random.randrange(3)
    apuesta2 = 0
    error = True
    apuesta = juego.leerApuesta(creditos)    
    jugar = juego()
    juego.mostrar(0,0,0,1)
    opcion = juego.eleccion()
    juego.mostrar(0,opcion,ace)
    print("¿Confirmas esta elección?...S-N")
    seguro = input()
    
    if(seguro.lower() == 's'):
        print("ok")
    else:
        opcion = juego.eleccion()
        
    auxiliar = juego.mostrar(1, opcion, ace)
    repetir = True
    while repetir:
        print("[A]umentar apuesta, o [C]ambiar de opción")
        conf = input()
        if (conf.upper() =='A'):
            if ((creditos-apuesta) == 0):
                print("No puedes apostar más, ¡mira tus créditos!")
                print("¿Deseas cambiar de opción? (S/N)")
                deseo = input()
                if (deseo.lower() == 's'):
                    opcion = juego.cambiarOpcion(auxiliar,opcion)
            else:  
                apuesta2 = juego.leerApuesta(creditos-apuesta)
            repetir = False
        elif (conf.upper() =='C'):
            opcion = juego.cambiarOpcion(auxiliar,opcion)
            repetir = False
        else:
            print("Opcion erronea ><")
           
    print("¿Estás listo?... que emoción, pulsa enter, a ver que pasa")   
    input()    

    juego.mostrar(2,opcion,ace)
    if (ace == opcion):
        print("Sí, Tu ganas") 
        creditos += (apuesta+apuesta2)
    else:
        print("Lo siento, no ganaste")
        creditos -= (apuesta+apuesta2) 

    if (creditos==0):
        print("Lo siento, te quedaste sin créditos, bye, bye")
    else:   
        print("Actualmente tienes "+str(creditos)+" créditos")       
        print("Deseas seguir jugando (S-N)")  
        seguir = input()
En el código la variable ace, es la opción que va a ganar, se pintará al final como letra A, si es una opción que no gana se pintará como Q, puedes ver la opción que has elegido con el símbolo ^ que aparece debajo de la opción.

 

Nota
El objetivo del juego no es enseñar a hacer un buen código ni hacer “vídeo-juegos”, si no que se aprenda a manejar bien la lógica en la programación, que se trabaje con condicionales, bucles e interacción con el usuario. No se tratan las posibles excepciones que puedan saltar para no meter "complejidad", aunque en Python son muy fáciles de utilizar, se ha comentado en el código las líneas que pueden generar problemas.

¿Te ayudó este Tutorial?

Ayuda a mejorar este Tutorial!
¿Quieres ayudarnos a mejorar este tutorial más? Puedes enviar tu Revisión con los cambios que considere útiles. Ya hay 0 usuario que han contribuido en este tutorial al enviar sus Revisiones. ¡Puedes ser el próximo!