[ Foro de Python ]

Duda con aventura de texto

06-Feb-2016 21:32
Invitado (Erik)
2 Respuestas

Hola!
Estoy aprendiendo la POO con Python. Y para poner en practica conceptos estoy practicando con una aventura de texto. Me estoy atascascando con el movimiento del personaje en el mapa. Y si hemos de crear la clase Mapa y luego otra clase Personaje donde herede de clase Mapa.

Seria algo parecido a esto:

class Mapa:
   def __init__(self, habitacion = 1):
       self.habitacion = habitacion
       
   def descripcion(self):
       if self.habitacion == 1:
           print('Estas en la 1 habitacion...')
       elif self.habitacion == 2:
           print('Estas en la 2 habitacion...')
   def movimientos(self):
       direccion = input('Adonde quieres ir...')
       return direccion
   
   

class Personaje(Mapa):
   def __init__(self, nombre):
       self.nombre = nombre
       self.inventario = []
       super().__init__()
       
   def coger(self, objeto):
       self.inventario.append(objeto)
       
   def dejar(self, objeto):        
       self.inventario.remove(objeto)


class Enemigo(Personaje):
   pass

Y la otra duda que me surge es el movimiento de localidades. Estoy viendo una pagina donde explican un algoritmo basico. Pero se enreda tanto que no me aclaro. Sobre todo el punto 10. Ya que hablan de crear una variable hecho = False. Y luego un bucle while. Pero claro,  si hacemos esto,  jamas entramos al bucle ¿Veis alguna errata?

Esta es la pagina:
http://programarcadegames.com/index.php?lang=es&chapter=lab_adventure

En todo caso ¿Es complicado con POO mover nuestro personaje y enemigos entre localidades? ¿Hay que crear mas clases?

Muchas Gracias!


07-Feb-2016 21:46
Nacho Cabanes (+84)

No sé a qué te refieres con "movimiento de localidades" ¿desplazarte de una habitación a otra?

Aun así, en tu planteamiento hay algún fallo de concepto: personaje no debe heredar de mapa. Sería como decir que "un personaje es un tipo concreto de mapa" y no es así.


08-Feb-2016 18:42
Invitado (Erik)

Gracias por la respuesta. Es verdad que una persona no puede heredar de una clase Mapa. Como ves, aun estoy verde en POO. Se supone que debo crear una clase que maneje las localidades y otra para el personaje. En todo caso, el enemigo si puede heredar del personaje.

Y en cuanto el movimiento de localidades, lo he resuelto con este codigo (que seguramente habra mucho mejores) que debere poner en la clase Mapa.

Codigo (primer borrador):

habitaciones = [['Habitacion 0', {'s': 3, 'e': 1}],
               ['Habitacion 1', {'s': 4, 'o': 0}],
               ['Habitacion 2', {'s': 5}],
               ['Habitacion 3', {'n': 0, 'e': 4}],
               ['Habitacion 4', {'n':1, 'e':5, 'o':3}],
               ['Habitacion 5', {'n':2, 'o':4}]]

habitacion_actual = 0

print(habitaciones[habitacion_actual])
print(habitaciones[habitacion_actual][0])

bandera = True
while bandera:
   direc = input('Que quieres hacer? ')
   if direc == 'salir':
       bandera = False
   if direc in habitaciones[habitacion_actual][1]:      
       habitacion_actual = habitaciones[habitacion_actual][1].get(direc)
       # no. habitacion
       print(habitaciones[habitacion_actual][0])
       # salidas
       print(habitaciones[habitacion_actual][1])        
   else:
       print('No puedes ir en esa direccion...')






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)