Cargando



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


jun 23 2016 13:18
Intermedio
jun 23 2016 20:28

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".

 

juegoPython.jpg

 

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?


1 Comentarios


Rafael Diaz Saldaña
ene 19 2017 10:29

muy bueno si que te hace ver la lógica de otra perspectiva 

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X