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.