/[ambar]/ambar/personajenojugador.py
ViewVC logotype

Diff of /ambar/personajenojugador.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2.0 by pabloruiz, Sat Aug 17 21:11:09 2002 UTC revision 2.1 by amoyav, Fri Aug 23 12:51:18 2002 UTC
# Line 19  Line 19 
19  #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20  #  #
21  #  #
22  #Fichero: personajenojugador.py  #Fichero: personajenojugador.py
23    
24  """Clase PersonajeNoJugador."""  """Clase PersonajeNoJugador."""
25    
26  from os import path  from os import path
27  from personaje import *  from personaje import *
28    
29    
30  DIR_DESC_PNJS = 'desc_pnjs'  DIR_DESC_PNJS = 'desc_pnjs'
31    
32    
33  class PersonajeNoJugador(Personaje):  class PersonajeNoJugador(Personaje):
34      """Cualquier personaje no controlado por un jugador.      """Cualquier personaje no controlado por un jugador.
35    
36      Los PNJs siempre tienen un controlador activo, excepto cuando son guardados a disco      Los PNJs siempre tienen un controlador activo, excepto cuando son guardados a disco
37      al volcarse junto con una sala. Al ser recuperados, se les vuelve a acoplar      al volcarse junto con una sala. Al ser recuperados, se les vuelve a acoplar
38      inmediatamente un controlador.      inmediatamente un controlador.
39            
40      Contiene los atributos comunes de un personaje, y ademas:      Contiene los atributos comunes de un personaje, y ademas:
41       - posesion (string): nombre del objeto que guarda este personaje       - posesion (string): nombre del objeto que guarda este personaje
42            
43      Invariantes:      Invariantes:
44          id tiene formato "id_fichero%clave_unica"          id tiene formato "id_fichero%clave_unica"
45          posesion != None          posesion != None
46          controlador != None          controlador != None
47      """      """
48    
49      def __init__(self, id, sala):      def __init__(self, id, sala):
50          """Método para crear un nuevo personaje no jugador.          """Método para crear un nuevo personaje no jugador.
51    
52          Al crearlo se le debe pasar un id unico, que no se repita dentro del juego          Al crearlo se le debe pasar un id unico, que no se repita dentro del juego
53          en ninguna otra instancia. Para ello, se añade al id que identifica el fichero          en ninguna otra instancia. Para ello, se añade al id que identifica el fichero
54          un simbolo % y un numero obtenido con PersonajeNoJugador_nuevo_id().          un simbolo % y un numero obtenido con PersonajeNoJugador_nuevo_id().
55    
56          Requiere:          Requiere:
57            id tiene formato "id_fichero%clave_unica"            id tiene formato "id_fichero%clave_unica"
58            sala != None            sala != None
59          """          """
60          Personaje.__init__(self, id, sala)          Personaje.__init__(self, id, sala)
61    
62          # DUMMY: de momento rellenamos los atributos a piñon.          # DUMMY: de momento rellenamos los atributos a piñon.
63          self.__dict__["nombre"] = "La Tutora"          self.__dict__["nombre"] = "La Tutora"
64          self.__dict__["descripcion"] = [{"dificultad":0, "texto":"Una anciana mujer, de aspecto respetable. Va vestida con una túnica encapuchada."}]          self.__dict__["descripcion"] = [{"dificultad":0, "texto":"Una anciana mujer, de aspecto respetable. Va vestida con una túnica encapuchada."}]
65          self.__dict__["experiencia"] = 0          self.__dict__["experiencia"] = 0
66          self.__dict__["nivel"] = 0          self.__dict__["nivel"] = 0
67          self.__dict__["vida"] = 1          self.__dict__["vida"] = 1
68          self.__dict__["volumen"] = 1          self.__dict__["volumen"] = 1
69          self.__dict__["estado"] = "vivo"          self.__dict__["estado"] = "vivo"
70          self.__dict__["controlador"] = None          self.__dict__["controlador"] = None
71          self.__dict__["atrib"] = { "fuerza":10,          self.__dict__["atrib"] = { "fuerza":10,
72                                     "destreza":10,                                     "destreza":10,
73                                     "constitucion":10,                                     "constitucion":10,
74                                     "inteligencia":10,                                     "inteligencia":10,
75                                     "sabiduria":10,                                     "sabiduria":10,
76                                     "carisma":10 }                                     "carisma":10 }
77          self.__dict__["idiomas"] = { Idioma_oestron:5,          self.__dict__["idiomas"] = { Idioma_oestron:5,
78                                       Idioma_enano:3,                                       Idioma_enano:3,
79                                       Idioma_quenya:3,                                       Idioma_quenya:3,
80                                       Idioma_orco:3 }                                       Idioma_orco:3 }
81    
82          self.posesion = ""          self.posesion = ""
83    
84          self.controlador_automatico()          self.controlador_automatico()
85    
86    
87      def controlador_automatico(self):      def controlador_automatico(self):
88          """Instancia un controlador automatico para este PNJ y se lo acopla.          """Instancia un controlador automatico para este PNJ y se lo acopla.
89    
90          El tipo de controlador vendra determinado por los atributos de este          El tipo de controlador vendra determinado por los atributos de este
91          PNJ segun se leen del fichero de descripcion.          PNJ segun se leen del fichero de descripcion.
92    
93          Requiere:          Requiere:
94              self.controlador == None              self.controlador == None
95    
96          Asegura:          Asegura:
97              self.controlador != None              self.controlador != None
98          """          """
99          # De momento, a piñon tambien.          # De momento, a piñon tambien.
100          if self.id.split('%')[0] == "tutora":          if self.id.split('%')[0] == "tutora":
101                  from interfazpnjhablante import InterfazPNJHablante                  from interfazpnjhablante import InterfazPNJHablante
102                  controlador = InterfazPNJHablante(self.id)                  self.controlador = InterfazPNJHablante(self.id)
103                  controlador.controlar_personaje(self)                  self.controlador.controlar_personaje(self)
104          else:          else:
105                  from interfazpnj import InterfazPNJ                  from interfazpnj import InterfazPNJ
106                  controlador = InterfazPNJ()                  self.controlador = InterfazPNJ()
107                  controlador.controlar_personaje(self)                  self.controlador.controlar_personaje(self)
108    
109    
110  # Metodos que se refieren a la clase pero tienen ambito de clase,  # Metodos que se refieren a la clase pero tienen ambito de clase,
111  # y no de instancia  # y no de instancia
112    
113  def PersonajeNoJugador_nuevo_id():  def PersonajeNoJugador_nuevo_id():
114      global PersonajeNoJugador_contador_de_ids      global PersonajeNoJugador_contador_de_ids
115      PersonajeNoJugador_contador_de_ids += 1      PersonajeNoJugador_contador_de_ids += 1
116      return str(PersonajeNoJugador_contador_de_ids)      return str(PersonajeNoJugador_contador_de_ids)
117    
118    
119  PersonajeNoJugador_contador_de_ids = 0  PersonajeNoJugador_contador_de_ids = 0
120    
121  # Código para pruebas unitarias del módulo.  # Código para pruebas unitarias del módulo.
122    
123  if (__name__ == '__main__'):  if (__name__ == '__main__'):
124      print "No hay prueba unitaria de módulo."      print "No hay prueba unitaria de módulo."
125    

Legend:
Removed from v.2.0  
changed lines
  Added in v.2.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26