Muchas gracias fue de mucha ayuda!
De casualidad sabes como importar clases de otros archivos
Quiero que el programa se pueda ejecutar en el archivo principal "a"
Por ejemplo en el archivo principal "a" tengo el menu utilzando metodos de las clases.
En el archivo "b" tengo la clase Aldea
En el archivo "c" Tengo la clase Dragon
Yo lo intente asi:
Archivo a
Código:
from b import Aldea
from c import Dragon
while True:
eleccion = int(input("En las oscuras tierras de las brujas y los trolls, vivía hace mucho tiempo el dragón más terrible que nunca existió.\n"
"Sus mágicos poderes le permitían ser como una nube, para moverse rápido como el viento, ser ligero como una pluma y tomar cualquier forma,\n"
"desde una simple ovejita, a un feroz ogro. Y por ser un dragón nube, era el único capaz de lanzar por su boca no sólo llamaradas de fuego,\n"
"sino brillantes rayos de tormenta.\n\n"
"El dragon se encuentra en su forma base\n"
"Que forma desea que adopte el dragon?\n"
"1- Quedarse como dragon\n"
"2- Nube\n"
"3- Ogro\n"
"4- Oveja\n"))
if eleccion == 1:
forma1 = "dragon"
print("El dragon se queda en su forma base")
break
elif eleccion == 2:
forma1 = "nube"
print("El dragon se ha transformado en nube")
break
elif eleccion == 3:
forma1 = "ogro"
print("El dragon se ha transformado en ogro")
break
elif eleccion == 4:
forma1 = "oveja"
print("El dragon se ha transformado en oveja")
break
else:
print("Opcion incorrecta, Por favor seleccione una opcion correcta")
nube = Dragon(forma1)
aldea1 = Aldea()
aldea2 = Aldea()
while True:
opcion = int(input("*** MENU PRINCIPAL ***:\n"
"1- Consultar Energia del Dragón\n"
"2- Consultar Distancia a la Aldea\n"
"3- Consultar cuantos edificios tiene la aldea\n"
"4- Preguntar cuanto tarda el Dragón en viajar a la aldea\n"
"5- Preguntar cuantas calorias gasta el Dragón en viajar a la aldea\n"
"6- Hacer que el Dragón duerma\n"
"7- Hacer que el Dragón hiberne\n"
"8- salir\n"))
if opcion == 1:
print("El dragon tiene", nube.calorias, "calorias")
elif opcion == 2:
print("La distancia a la aldea es", aldea1.distancia, "km")
elif opcion == 3:
aldea1.mostrar_edificios()
elif opcion == 4:
nube.cuanto_tarda(aldea1)
elif opcion == 5:
nube.cuantas_calorias(aldea1)
elif opcion == 6:
nube.dormir()
elif opcion == 7:
nube.hibernar()
elif opcion ==8:
print("FIN DEL JUEGO")
break
else:
print("Opcion incorrecta, Por favor seleccione una opcion correcta")
# PUNTO 6
while True:
opcion = int(input("*** MENU PRINCIPAL ***:\n"
"1- Consultar Energia\n"
"2- Consultar Distancia a la Aldea 1\n"
"3- Consultar Distancia a la Aldea 2\n"
"4- Consultar cuantos edificios tiene la aldea 1\n"
"5- Consultar cuantos edificios tiene la aldea 2\n"
"6- Preguntar cuanto tarda el Dragón en viajar a la aldea\n"
"7- Preguntar cuanto tarda el Dragón en viajar a la aldea 2\n"
"8- Preguntar cuantas calorias gasta el Dragón en viajar a la aldea 1\n"
"9- Preguntar cuantas calorias gasta el Dragón en viajar a la aldea 2\n"
"10- Hacer que el Dragón duerma\n"
"11- Hacer que el Dragón hiberne"
"12- salir\n"))
if opcion == 1:
print("El dragon tiene", nube.calorias, "calorias")
elif opcion == 2:
aldea1.mostrar_distancia()
elif opcion == 3:
aldea2.mostrar_distancia()
elif opcion == 4:
aldea1.mostrar_edificios()
elif opcion == 5:
aldea2.mostrar_edificios()
elif opcion == 6:
nube.cuanto_tarda(aldea1)
elif opcion == 7:
nube.cuanto_tarda(aldea2)
elif opcion == 8:
nube.cuantas_calorias(aldea1)
elif opcion == 9:
nube.cuantas_calorias(aldea2)
elif opcion == 10:
nube.dormir()
elif opcion == 11:
nube.hibernar()
elif opcion == 12:
print("FIN DEL JUEGO")
break
else:
print("Opcion incorrecta, Por favor seleccione una opcion correcta")
Archivo B:
Código:
import random
class Aldea():
def __init__(self):
#Atributos
self.distancia = random.randint(500, 5000)
self.edificios = random.randint(20, 100)
def mostrar_distancia(self):
print("La distancia a la aldea es {0} km".format(self.distancia))
def mostrar_edificios(self):
print("La aldea tiene {0} edificios".format(self.edificios))
Archivo C:
Código:
from a import aldea1,aldea2
class Dragon():
def __init__(self, forma):
#Atributos
self.forma = forma
self.calorias = 50000
#Metodos
def cuanto_tarda(self, aldea):
if aldea == aldea1:
if self.forma == "nube":
tiempo = aldea1.distancia/500
tiempo = round(tiempo, 1)
print("Tardara {0} horas en llegar a la aldea".format(tiempo))
elif self.forma == "dragon":
tiempo = aldea1.distancia/75
tiempo = round(tiempo, 1)
print("Tardara {0} horas en llegar a la aldea".format(tiempo))
elif self.forma == "ogro":
tiempo = aldea1.distancia/2
tiempo = round(tiempo, 1)
print("Tardara {0} horas en llegar a la aldea".format(tiempo))
elif self.forma == "oveja":
tiempo = aldea1.distancia/5
tiempo = round(tiempo, 1)
print("Tardara {0} horas en llegar a la aldea".format(tiempo))
elif aldea == aldea2:
if self.forma == "nube":
tiempo = aldea2.distancia/500
tiempo = round(tiempo, 1)
print("Tardara {0} horas en llegar a la aldea".format(tiempo))
elif self.forma == "dragon":
tiempo = aldea2.distancia/75
tiempo = round(tiempo, 1)
print("Tardara {0} horas en llegar a la aldea".format(tiempo))
elif self.forma == "ogro":
tiempo = aldea2.distancia/2
tiempo = round(tiempo, 1)
print("Tardara {0} horas en llegar a la aldea".format(tiempo))
elif self.forma == "oveja":
tiempo = aldea2.distancia/5
tiempo = round(tiempo, 1)
print("Tardara {0} horas en llegar a la aldea".format(tiempo))
def cuantas_calorias(self, aldea):
if aldea == aldea1:
if (self.forma == "nube") or (self.forma == "dragon"):
k = 2 * aldea1.distancia + (2000 * (aldea1.distancia / 100))
print("Gastara {0} calorias en viajar a la aldea".format(k))
elif self.forma == "oveja":
k = 2 * aldea1.distancia + 1 * aldea1.distancia
print("Gastara {0} calorias en viajar a la aldea".format(k))
elif self.forma == "ogro":
k = 2 * aldea1.distancia + 25 * aldea1.distancia
print("Gastara {0} calorias en viajar a la aldea".format(k))
while True:
op = int(input("Desea viajar a la aldea?\n"
"1- SI \n"
"2- NO \n"))
if op == 1:
if self.calorias >= k:
self.calorias = self.calorias - k
print("El dragon viajo a la aldea ")
while True:
op2 = int(input("Desea atacar la aldea? \n"
"1- SI\n"
"2- NO\n"))
if op2 == 1:
self.atacar(aldea)
elif op2 == 2:
print("El dragon no ataco la aldea")
break
else:
print("Opcion incorrecta por favor seleccione una opcion correcta")
else:
print("El dragon no tiene suficiente energia para viajar a la aldea")
break
elif op == 2:
print("El dragon no ha viajado a la aldea")
break
else:
print("Opcion incorrecta por favor seleccione una opcion correcta")
elif aldea == aldea2:
if (self.forma == "nube") or (self.forma == "dragon"):
k = 2 * aldea2.distancia + (2000 * (aldea2.distancia / 100))
print("Gastara {0} calorias en viajar a la aldea".format(k))
elif self.forma == "oveja":
k = 2 * aldea2.distancia + 1 * aldea2.distancia
print("Gastara {0} calorias en viajar a la aldea".format(k))
elif self.forma == "ogro":
k = 2 * aldea2.distancia + 25 * aldea2.distancia
print("Gastara {0} calorias en viajar a la aldea".format(k))
while True:
op = int(input("Desea viajar a la aldea?\n"
"1- SI \n"
"2- NO \n"))
if op == 1:
if self.calorias >= k:
self.calorias = self.calorias - k
print("El dragon viajo a la aldea ")
while True:
op2 = int(input("Desea atacar la aldea? \n"
"1- SI\n"
"2- NO\n"))
if op2 == 1:
self.atacar(aldea)
elif op2 == 2:
print("El dragon no ataco la aldea")
break
else:
print("Opcion incorrecta por favor seleccione una opcion correcta")
else:
print("El dragon no tiene suficiente energia para atacar la aldea")
break
elif op == 2:
print("El dragon no ha viajado a la aldea")
break
else:
print("Opcion incorrecta por favor seleccione una opcion correcta")
def dormir(self):
self.calorias = self.calorias + 100*7
print("El dragon ha dormido 7 horas")
def hibernar(self):
self.calorias = self.calorias + 50000
print("El dragon ha dormido 1 mes")
def atacar(self, aldea):
if self.calorias >= 500:
self.calorias = self.calorias - 500
if aldea == aldea1:
if self.forma == "nube":
aldea1.edificios = aldea1.edificios - 1
print("El dragon ha atacado la aldea y ha destruido 1 edificio")
elif self.forma == "dragon":
aldea1.edificios = aldea1.edificios - 5
print("El dragon ha atacado la aldea y ha destruido 5 edificios")
elif self.forma == "ogro":
aldea1.edificios = aldea1.edificios - 7
print("El dragon ha atacado la aldea y ha destruido 7 edificios")
elif self.forma == "oveja":
aldea1.edificios = aldea1.edificios
print("El dragon ha atacado la aldea pero no ha destruido ningun edificio")
elif aldea == aldea2:
if self.forma == "nube":
aldea2.edificios = aldea2.edificios - 1
print("El dragon ha atacado la aldea y ha destruido 1 edificio")
elif self.forma == "dragon":
aldea2.edificios = aldea2.edificios - 5
print("El dragon ha atacado la aldea y ha destruido 5 edificios")
elif self.forma == "ogro":
aldea2.edificios = aldea2.edificios - 7
print("El dragon ha atacado la aldea y ha destruido 7 edificios")
elif self.forma == "oveja":
aldea2.edificios = aldea2.edificios
print("El dragon ha atacado la aldea pero no ha destruido ningun edificio")
else:
print("El dragon no tiene suficiente energia para atacar la aldea")
En el archivo c estoy usando las variables aldea1 y aldea2 que se definen en el menu pero no me funciona
Me sale el error "most likely due to a circular import". Gracias por tu tiempo!