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

Diff of /ambar/raza.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 pabloruiz, Tue Nov 5 22:58:22 2002 UTC
# Line 1  Line 1 
1  #!/usr/bin/env python  #!/usr/bin/env python
2  #  #
3  #Minë. Mundo Interactivo-Narrativo en Español [Tierra-Media]  #Minë. Mundo Interactivo-Narrativo en Español [Tierra-Media]
4  #Copyright (C) 2002  Pablo Ruiz Múzquiz  #Copyright (C) 2002  Pablo Ruiz Múzquiz
5  #  #
6  #  #
7  #This program is free software; you can redistribute it and/or modify  #This program is free software; you can redistribute it and/or modify
8  #it under the terms of the GNU General Public License as published by  #it under the terms of the GNU General Public License as published by
9  #the Free Software Foundation; either version 2 of the License, or  #the Free Software Foundation; either version 2 of the License, or
10  #(at your option) any later version.  #(at your option) any later version.
11  #  #
12  #This program is distributed in the hope that it will be useful,  #This program is distributed in the hope that it will be useful,
13  #but WITHOUT ANY WARRANTY; without even the implied warranty of  #but WITHOUT ANY WARRANTY; without even the implied warranty of
14  #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  #GNU General Public License for more details.  #GNU General Public License for more details.
16  #  #
17  #You should have received a copy of the GNU General Public License  #You should have received a copy of the GNU General Public License
18  #along with this program; if not, write to the Free Software  #along with this program; if not, write to the Free Software
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: raza.py  #Fichero: raza.py
23    
24  """Clase Raza."""  """Clase Raza."""
25    
26  from idioma import *  from idioma import *
27    
28    
29  class Raza:  class Raza:
30      """Información sobre cualquiera de las razas que pueden tener los personajes.      """Información sobre cualquiera de las razas que pueden tener los personajes.
31            
32      Una raza se caracteriza por:      Una raza se caracteriza por:
33          - nombre (string): identificador de la raza          - nombre (string): identificador de la raza
34          - volumen_base (int): volumen típico de un personaje de esta raza          - volumen_base (int): volumen típico de un personaje de esta raza
35          - aura_base (int): aura típica de un personaje de esta raza          - aura_base (int): aura típica de un personaje de esta raza
36          - descripcion_base ({string: any}): descripción típica de un personaje de esta raza,          - descripcion_base ({string: any}): descripción típica de un personaje de esta raza,
37                                              en el mismo formato que la de PersonajeJugador                                              en el mismo formato que la de PersonajeJugador
38          - idiomas_base ({Idioma: int}): idiomas típicos que conoce un personaje de esta raza          - idiomas_base ({Idioma: int}): idiomas típicos que conoce un personaje de esta raza
39          - profesiones_prohibidas ([Profesion]): profesiones a las que no se puede acceder por raza          - profesiones_prohibidas ([Profesion]): profesiones a las que no se puede acceder por raza
40          - modif_atrib ({string: int}): modificadores a los atributos según la raza          - modif_atrib ({string: int}): modificadores a los atributos según la raza
41          - nombre_genero ({string: string}): nombre de la raza según género (masculino / femenino)          - nombre_genero ({string: string}): nombre de la raza según género (masculino / femenino)
42    
43      Invariantes:      Invariantes:
44        nombre != None        nombre != None
45        volumen_base > 0        volumen_base > 0
46        aura_base in range(0,100)        aura_base in range(0,100)
47    
48        descripcion_base != None        descripcion_base != None
49        len(descripcion_base) >= 0        len(descripcion_base) >= 0
50        descripcion_base[i]["dificultad"] in range(0,100)        descripcion_base[i]["dificultad"] in range(0,100)
51        descripcion_base[i]["texto"] != None        descripcion_base[i]["texto"] != None
52    
53        idiomas_base != None        idiomas_base != None
54        len(idiomas_base) == len(Idioma_lista)        len(idiomas_base) == len(Idioma_lista)
55        idiomas_base[i] in range(1,5)        idiomas_base[i] in range(1,5)
56    
57        profesiones_prohibidas != None        profesiones_prohibidas != None
58        len(profesiones_prohibidas) > 0        len(profesiones_prohibidas) > 0
59    
60        modif_atrib != None        modif_atrib != None
61        len(modif_atrib) == 6        len(modif_atrib) == 6
62    
63        nombre_genero != None        nombre_genero != None
64        len(nombre_genero) == 2        len(nombre_genero) == 2
65        nombre_genero[i] != None        nombre_genero[i] != None
66      """      """
67    
68      def __init__(self, nombre, volumen_base, aura_base, descripcion_base,      def __init__(self, nombre, volumen_base, aura_base, descripcion_base,
69                   idiomas_base, profesiones_prohibidas, modif_atrib,                   idiomas_base, profesiones_prohibidas, modif_atrib,
70                   nombre_genero):                   nombre_genero):
71          """Crea una nueva instancia de Raza.          """Crea una nueva instancia de Raza.
72    
73          No está permitido instanciar más razas aparte de las existentes          No está permitido instanciar más razas aparte de las existentes
74          dentro de Raza_lista.          dentro de Raza_lista.
75    
76          Requiere:          Requiere:
77            Todos los parámetros satisfacen las invariantes.            Todos los parámetros satisfacen las invariantes.
78          """          """
79          self.nombre = nombre          self.nombre = nombre
80          self.volumen_base = volumen_base          self.volumen_base = volumen_base
81          self.aura_base = aura_base          self.aura_base = aura_base
82          self.descripcion_base = descripcion_base          self.descripcion_base = descripcion_base
83          self.idiomas_base = idiomas_base          self.idiomas_base = idiomas_base
84          self.profesiones_prohibidas = profesiones_prohibidas          self.profesiones_prohibidas = profesiones_prohibidas
85          self.modif_atrib = modif_atrib          self.modif_atrib = modif_atrib
86          self.nombre_genero = nombre_genero          self.nombre_genero = nombre_genero
87    
88            
89  # Lista de todas las razas definidas  # Lista de todas las razas definidas
90  Raza_lista = [ Raza(nombre = "elfo",  Raza_lista = [ Raza(nombre = "elfo",
91                      volumen_base = 1,                      volumen_base = 1,
92                      aura_base = 65,                      aura_base = 65,
93                      descripcion_base = [{"dificultad": 0,                      descripcion_base = [{"dificultad": 0,
94                                           "texto": "Un elfo de los de toda la vida."}],                                           "texto": "Un elfo de los de toda la vida."}],
95                      idiomas_base = {Idioma_oestron:5,                      idiomas_base = {Idioma_oestron:5,
96                                      Idioma_quenya:5,                                      Idioma_quenya:5,
97                                      Idioma_enano:0,                                      Idioma_enano:0,
98                                      Idioma_orco:0},                                      Idioma_orco:0},
99                      profesiones_prohibidas = [],                      profesiones_prohibidas = [],
100                      modif_atrib = {"fuerza": -1,                      modif_atrib = {"fuerza": -1,
101                                     "destreza": +2,                                     "destreza": +2,
102                                     "constitucion": -1,                                     "constitucion": -1,
103                                     "inteligencia": +0,                                     "inteligencia": +0,
104                                     "sabiduria": +1,                                     "sabiduria": +1,
105                                     "carisma": +1},                                     "carisma": +1},
106                      nombre_genero = {"masculino": "el elfo",                      nombre_genero = {"masculino": "el elfo",
107                                       "femenino": "la elfa"}),                                       "femenino": "la elfa"}),
108    
109                 Raza(nombre = "humano",                 Raza(nombre = "humano",
110                      volumen_base = 1,                      volumen_base = 1,
111                      aura_base = 50,                      aura_base = 50,
112                      descripcion_base = [{"dificultad": 0,                      descripcion_base = [{"dificultad": 0,
113                                           "texto": "Un humano corrientillo."}],                                           "texto": "Un humano corrientillo."}],
114                      idiomas_base = {Idioma_oestron:5,                      idiomas_base = {Idioma_oestron:5,
115                                      Idioma_quenya:0,                                      Idioma_quenya:0,
116                                      Idioma_enano:0,                                      Idioma_enano:0,
117                                      Idioma_orco:0},                                      Idioma_orco:0},
118                      profesiones_prohibidas = [],                      profesiones_prohibidas = [],
119                      modif_atrib = {"fuerza": +2,                      modif_atrib = {"fuerza": +2,
120                                     "destreza": +0,                                     "destreza": +0,
121                                     "constitucion": +1,                                     "constitucion": +1,
122                                     "inteligencia": -1,                                     "inteligencia": -1,
123                                     "sabiduria": -1,                                     "sabiduria": -1,
124                                     "carisma": -1},                                     "carisma": -1},
125                      nombre_genero = {"masculino": "el humano",                      nombre_genero = {"masculino": "el humano",
126                                       "femenino": "la humana"}),                                       "femenino": "la humana"}),
127    
128                 Raza(nombre = "orco",                 Raza(nombre = "orco",
129                      volumen_base = 1,                      volumen_base = 1,
130                      aura_base = 35,                      aura_base = 35,
131                      descripcion_base = [{"dificultad": 0,                      descripcion_base = [{"dificultad": 0,
132                                           "texto": "Un orco entrañable."}],                                           "texto": "Un orco entrañable."}],
133                      idiomas_base = {Idioma_oestron:5,                      idiomas_base = {Idioma_oestron:5,
134                                      Idioma_quenya:0,                                      Idioma_quenya:0,
135                                      Idioma_enano:0,                                      Idioma_enano:0,
136                                      Idioma_orco:5},                                      Idioma_orco:5},
137                      profesiones_prohibidas = ["montaraz",                      profesiones_prohibidas = ["montaraz",
138                                                "bardo",                                                "bardo",
139                                                "animista"],                                                "animista"],
140                      modif_atrib = {"fuerza": +3,                      modif_atrib = {"fuerza": +3,
141                                     "destreza": +1,                                     "destreza": +1,
142                                     "constitucion": +3,                                     "constitucion": +3,
143                                     "inteligencia": -2,                                     "inteligencia": -2,
144                                     "sabiduria": -2,                                     "sabiduria": -2,
145                                     "carisma": -2},                                     "carisma": -2},
146                      nombre_genero = {"masculino": "el orco",                      nombre_genero = {"masculino": "el orco",
147                                       "femenino": "la orca"}),                                       "femenino": "la orca"}),
148    
149                 Raza(nombre = "enano",                 Raza(nombre = "enano",
150                      volumen_base = 0.75,                      volumen_base = 0.75,
151                      aura_base = 50,                      aura_base = 50,
152                      descripcion_base = [{"dificultad": 0,                      descripcion_base = [{"dificultad": 0,
153                                           "texto": "El enano de siempre."}],                                           "texto": "El enano de siempre."}],
154                      idiomas_base = {Idioma_oestron:5,                      idiomas_base = {Idioma_oestron:5,
155                                      Idioma_quenya:0,                                      Idioma_quenya:0,
156                                      Idioma_enano:5,                                      Idioma_enano:5,
157                                      Idioma_orco:1},                                      Idioma_orco:1},
158                      profesiones_prohibidas = ["animista"],                      profesiones_prohibidas = ["animista"],
159                      modif_atrib = {"fuerza": +4,                      modif_atrib = {"fuerza": +4,
160                                     "destreza": +0,                                     "destreza": +0,
161                                     "constitucion": +4,                                     "constitucion": +4,
162                                     "inteligencia": -2,                                     "inteligencia": -2,
163                                     "sabiduria": -3,                                     "sabiduria": -3,
164                                     "carisma": -2},                                     "carisma": -2},
165                      nombre_genero = {"masculino": "el enano",                      nombre_genero = {"masculino": "el enano",
166                                       "femenino": "la enana"}),                                       "femenino": "la enana"}),
167                                                                            
168                 Raza(nombre = "hobbit",                 Raza(nombre = "hobbit",
169                      volumen_base = 0.5,                      volumen_base = 0.5,
170                      aura_base = 50,                      aura_base = 50,
171                      descripcion_base = [{"dificultad": 0,                      descripcion_base = [{"dificultad": 0,
172                                           "texto": "Un hobbit rechoncho."}],                                           "texto": "Un hobbit rechoncho."}],
173                      idiomas_base = {Idioma_oestron:5,                      idiomas_base = {Idioma_oestron:5,
174                                      Idioma_quenya:0,                                      Idioma_quenya:0,
175                                      Idioma_enano:0,                                      Idioma_enano:0,
176                                      Idioma_orco:0},                                      Idioma_orco:0},
177                      profesiones_prohibidas = ["montaraz",                      profesiones_prohibidas = ["montaraz",
178                                                "animista"],                                                "animista"],
179                      modif_atrib = {"fuerza": -2,                      modif_atrib = {"fuerza": -2,
180                                     "destreza": +2,                                     "destreza": +2,
181                                     "constitucion": -1,                                     "constitucion": -1,
182                                     "inteligencia": +1,                                     "inteligencia": +1,
183                                     "sabiduria": -1,                                     "sabiduria": -1,
184                                     "carisma": +0},                                     "carisma": +0},
185                      nombre_genero = {"masculino": "el hobbit",                      nombre_genero = {"masculino": "el hobbit",
186                                       "femenino": "la hobbit"}) ]                                       "femenino": "la hobbit"}) ]
187    
188    
189  def Raza_buscar(nombre):  def Raza_buscar(nombre):
190      """Obtiene un raza a partir de su nombre, o None si no existe.      """Obtiene un raza a partir de su nombre, o None si no existe.
191    
192      Requiere:      Requiere:
193        nombre != None        nombre != None
194      """      """
195      for raza in Raza_lista:      for raza in Raza_lista:
196          if raza.nombre == nombre:          if raza.nombre == nombre:
197              return raza              return raza
198      return None      return None
199    
200    
201  # Andrés: hay dos partes del sistema de razas que no sé que hacer con ellas:  # Andrés: hay dos partes del sistema de razas que no sé que hacer con ellas:
202  #  #
203  # - Filtro de color de ojos y pelo: esto si se quiere hacer habría que  # - Filtro de color de ojos y pelo: esto si se quiere hacer habría que
204  #   estudiarlo más y darle un poco más de contenido. De momento lo suprimo.  #   estudiarlo más y darle un poco más de contenido. De momento lo suprimo.
205  # - Ajuste de puntos de vida por raza: esto lo dejo aparcado hasta que nos  # - Ajuste de puntos de vida por raza: esto lo dejo aparcado hasta que nos
206  #   pongamos con el sistema de combate.  #   pongamos con el sistema de combate.
207  #  #
208  # Aquí copio el código que había al respecto en PersonajeJugador.py  # Aquí copio el código que había al respecto en PersonajeJugador.py
209  #  #
210  # class PJElfo(PersonajeJugador):  # class PJElfo(PersonajeJugador):
211  #     def vida_ajustada(self, vida): return vida + self.nivel * 4  #     def vida_ajustada(self, vida): return vida + self.nivel * 4
212  #  #
213  # class PJHumano(PersonajeJugador):  # class PJHumano(PersonajeJugador):
214  #     def vida_ajustada(self, vida): return vida + self.nivel * 5  #     def vida_ajustada(self, vida): return vida + self.nivel * 5
215  #  #
216  # class PJOrco(PersonajeJugador):  # class PJOrco(PersonajeJugador):
217  #     def color_de_ojos_ajustado(self, color_de_ojos):  #     def color_de_ojos_ajustado(self, color_de_ojos):
218  #         if color_de_ojos in ['verde', 'azul']:  #         if color_de_ojos in ['verde', 'azul']:
219  #             print "Lo siento, un orco no puede tener los ojos de color", color_de_ojos  #             print "Lo siento, un orco no puede tener los ojos de color", color_de_ojos
220  #             print "Tus ojos serán de color negro"  #             print "Tus ojos serán de color negro"
221  #             return 'negro'  #             return 'negro'
222  #         else:  #         else:
223  #             return color_de_ojos  #             return color_de_ojos
224  #     def color_de_pelo_ajustado(self, color_de_pelo):  #     def color_de_pelo_ajustado(self, color_de_pelo):
225  #         if color_de_pelo in ['rubio', 'pelirrojo']:  # esto es una pijada  #         if color_de_pelo in ['rubio', 'pelirrojo']:  # esto es una pijada
226  #             print "Lo siento, un orco no puede tener el pelo de color", color_de_pelo  #             print "Lo siento, un orco no puede tener el pelo de color", color_de_pelo
227  #             print "Tu pelo será de color negro"  #             print "Tu pelo será de color negro"
228  #             return 'negro'  #             return 'negro'
229  #         else:  #         else:
230  #             return color_de_pelo  #             return color_de_pelo
231  #     def vida_ajustada(self, vida): return vida + self.nivel * 5  #     def vida_ajustada(self, vida): return vida + self.nivel * 5
232  #  #
233  # class PJEnano(PersonajeJugador):  # class PJEnano(PersonajeJugador):
234  #     def vida_ajustada(self, vida): return vida + self.nivel * 6  #     def vida_ajustada(self, vida): return vida + self.nivel * 6
235  #  #
236  # class PJHobbit(PersonajeJugador):  # class PJHobbit(PersonajeJugador):
237  #     def vida_ajustada(self, vida): return vida + self.nivel * 6  #     def vida_ajustada(self, vida): return vida + self.nivel * 6
238    
239    
240  # Código para pruebas unitarias del módulo.  # Código para pruebas unitarias del módulo.
241    
242  if (__name__ == '__main__'):  if (__name__ == '__main__'):
243      for nombre_raza in [raza.nombre for raza in Raza_lista]:      for nombre_raza in [raza.nombre for raza in Raza_lista]:
244          raza = Raza_buscar(nombre_raza)          raza = Raza_buscar(nombre_raza)
245          print "Raza: " + raza.nombre          print "Raza: " + raza.nombre
246          print " volumen_base = " + str(raza.volumen_base)          print " volumen_base = " + str(raza.volumen_base)
247          print " aura_base = " + str(raza.aura_base)          print " aura_base = " + str(raza.aura_base)
248          print " descripcion_base = " + str(raza.descripcion_base)          print " descripcion_base = " + str(raza.descripcion_base)
249          print " idiomas_base = " + str(raza.idiomas_base)          print " idiomas_base = " + str(raza.idiomas_base)
250          print " profesiones_prohibidas = " + str(raza.profesiones_prohibidas)          print " profesiones_prohibidas = " + str(raza.profesiones_prohibidas)
251          print " modif_atrib = " + str(raza.modif_atrib)          print " modif_atrib = " + str(raza.modif_atrib)
252          print " nombre_genero = " + str(raza.nombre_genero)          print " nombre_genero = " + str(raza.nombre_genero)
253    

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