Este ejercicio me ha gustado mucho. Descubrir que se puede hacer que se ejecute una función como expresión de una variable me ha volado la cabeza. Es tontísimo, pero también lo soy yo. Escribí el código y después estuve un rato intentando entender por qué estaba funcionando y me divertí un ratazo. Mientras siga divirtiéndome seguro que al final termino aprendiendo a hacer algo.
# mancantao
import random # importa el módulo random para números aleatorios
import time # importa el módulo time para los delays de explorarCueva
# El programa va a definir algunas funciones antes de empezar
def mostrarIntroducción(): # defines la función de la introducción, no mucho más que decir
# se podría hacer con un print partiéndolo con \n
'''
print('Estás en una tierra llena de dragones. Frente a ti' '\n' 'hay dos cuevas. En una de ellas el dragón es generoso y' '\n' 'amigable y compartirá su tesoro contigo. El otro dragón' '\n' 'es codicioso y está hambriento y te devorará inmediatamente.')
'''
print('Estás en una tierra llena de dragones. Frente a ti')
print('hay dos cuevas. En una de ellas el dragón es generoso y')
print('amigable y compartirá su tesoro contigo. El otro dragón')
print('es codicioso y está hambriento y te devorará inmediatamente.')
def elegirCueva():
# puedes meter lo que quieras, se va a sobreescribir en cuanto responda el paco, pero es más elegante crear una cadena vacía
# y más interesante meter algo que nadie va a ver
cueva = 'Gustavo Bueso es un fraude'
# cachondo, si no es uno o dos repite el bucle hasta que el paco responda lo que debe, si es 1 o 2 sigue adelante
while cueva != '1' and cueva != '2':
print('¿A qué cueva quieres entrar? (1 o 2)')
cueva = input()
# hace que la función elegirCueva, al terminar, devuelva el valor de la variable cueva, así que el resultado de elegirCueva() sería 1 o 2
return cueva
def explorarCueva(cuevaElegida):
print('Te aproximas a la cueva...')
time.sleep(2)
print('Es oscura y espeluznante...')
time.sleep(2)
print('¡Un gran dragón aparece súbitamente frente a ti! Abre sus fauces y...')
print()
time.sleep(2)
cuevaAmigable = random.randint(1,2) # asocia un número aleatorio entre 1 y 2 a cuevaAmigable
if cuevaElegida == str(cuevaAmigable):
print('¡Te regala su tesoro!')
else:
print('¡Te engulle de un bocado!')
# Y el programa empieza
jugarDeNuevo = 'si' # empieza dándole un valor si a jugarDeNuevo para poner en marcha el while
while jugarDeNuevo == 'si' or jugarDeNuevo == 's':
mostrarIntroducción()
númeroDeCueva = elegirCueva() # asocia númeroDeCueva a la ejecución de elegirCueva!!! eso mola un montón. El valor que devuelve se le asigna a númeroDeCueva
explorarCueva(númeroDeCueva) # ejecuta explorarCueva con el valor de número de Cueva
print('¿Quieres jugar de nuevo (si o no)')
jugarDeNuevo = input()