23 |
"""Clase Requisito.""" |
"""Clase Requisito.""" |
24 |
|
|
25 |
import sys |
import sys |
26 |
|
import sre |
27 |
from utils import * |
from utils import * |
28 |
from idioma import * |
from idioma import * |
29 |
|
|
91 |
"raza": [ ("id", "Personaje"), ("comparador", "string"), ("valor", "string") ], |
"raza": [ ("id", "Personaje"), ("comparador", "string"), ("valor", "string") ], |
92 |
"profesion": [ ("id", "Personaje"), ("comparador", "string"), ("valor", "string") ], |
"profesion": [ ("id", "Personaje"), ("comparador", "string"), ("valor", "string") ], |
93 |
"sexo": [ ("id", "Personaje"), ("comparador", "string"), ("valor", "string") ], |
"sexo": [ ("id", "Personaje"), ("comparador", "string"), ("valor", "string") ], |
94 |
"objeto_en_mochila": [ ("id", "Personaje"), ("id_objeto", "string"), ("comparador", "string"), ("valor", "si_no") ], |
"objeto_en_mochila": [ ("id", "Personaje"), ("nombre_objeto", "string"), ("comparador", "string"), ("valor", "si_no") ], |
95 |
"objeto_puesto": [ ("id", "Personaje"), ("id_objeto", "string"), ("posicion", "string"), ("comparador", "string"), ("valor", "si_no") ], |
"objeto_puesto": [ ("id", "Personaje"), ("nombre_objeto", "string"), ("posicion", "string"), ("comparador", "string"), ("valor", "si_no") ], |
96 |
"confianza": [ ("id", "Personaje"), ("personaje_objeto", "Personaje"), ("comparador", "string"), ("valor", "numero") ], |
"confianza": [ ("id", "Personaje"), ("personaje_objeto", "Personaje"), ("comparador", "string"), ("valor", "numero") ], |
97 |
"resultado_tirada": [ ("id", "Personaje"), ("id_tirada", "string"), ("dificultad", "numero"), ("comparador", "string"), ("valor", "numero") ], |
"resultado_tirada": [ ("id", "Personaje"), ("id_tirada", "string"), ("dificultad", "numero"), ("comparador", "string"), ("valor", "numero") ], |
98 |
"resultado_competicion": [ ("id", "Personaje"), ("id_competicion", "string"), ("comparador", "string"), ("valor", "numero") ], |
"resultado_competicion": [ ("id", "Personaje"), ("id_competicion", "string"), ("comparador", "string"), ("valor", "numero") ], |
102 |
}, |
}, |
103 |
|
|
104 |
"Objeto": { |
"Objeto": { |
105 |
|
"nombre": [ ("id", "Objeto"), ("comparador", "string"), ("valor", "string") ], |
106 |
"tipo": [ ("id", "Objeto"), ("comparador", "string"), ("valor", "string") ], |
"tipo": [ ("id", "Objeto"), ("comparador", "string"), ("valor", "string") ], |
107 |
"categoria": [ ("id", "Objeto"), ("comparador", "string"), ("valor", "string") ], |
"categoria": [ ("id", "Objeto"), ("comparador", "string"), ("valor", "string") ], |
108 |
"peso": [ ("id", "Objeto"), ("comparador", "string"), ("valor", "numero") ], |
"peso": [ ("id", "Objeto"), ("comparador", "string"), ("valor", "numero") ], |
112 |
}, |
}, |
113 |
|
|
114 |
"Sala": { |
"Sala": { |
115 |
|
"nombre": [ ("id", "Sala"), ("comparador", "string"), ("valor", "string") ], |
116 |
"tipo": [ ("id", "Sala"), ("comparador", "string"), ("valor", "string") ], |
"tipo": [ ("id", "Sala"), ("comparador", "string"), ("valor", "string") ], |
117 |
"subtipo": [ ("id", "Sala"), ("comparador", "string"), ("valor", "string") ], |
"subtipo": [ ("id", "Sala"), ("comparador", "string"), ("valor", "string") ], |
118 |
"volumen": [ ("id", "Sala"), ("comparador", "string"), ("valor", "numero") ], |
"volumen": [ ("id", "Sala"), ("comparador", "string"), ("valor", "numero") ], |
119 |
"luz": [ ("id", "Sala"), ("comparador", "string"), ("valor", "numero") ], |
"luz": [ ("id", "Sala"), ("comparador", "string"), ("valor", "numero") ], |
120 |
"aura": [ ("id", "Sala"), ("comparador", "string"), ("valor", "numero") ], |
"aura": [ ("id", "Sala"), ("comparador", "string"), ("valor", "numero") ], |
121 |
"objeto_en_sala": [ ("id", "Sala"), ("id_objeto", "string"), ("comparador", "string"), ("valor", "si_no") ] |
"objeto_en_sala": [ ("id", "Sala"), ("nombre_objeto", "string"), ("comparador", "string"), ("valor", "si_no") ] |
122 |
}, |
}, |
123 |
|
|
124 |
"mundo": { |
"mundo": { |
362 |
else: |
else: |
363 |
valor_str = v |
valor_str = v |
364 |
|
|
365 |
if valor_str == "*": |
if valor_str == "*" or valor_str == "+*": |
366 |
valor = sys.maxint |
valor = sys.maxint |
367 |
elif valor_str == "-*": |
elif valor_str == "-*": |
368 |
valor = -sys.maxint |
valor = -sys.maxint |
419 |
objeto_base = valor |
objeto_base = valor |
420 |
elif parametro["nombre"] == "comparador": |
elif parametro["nombre"] == "comparador": |
421 |
comparador = valor |
comparador = valor |
422 |
|
if comparador == "mayor": |
423 |
|
comparador = ">" |
424 |
|
elif comparador == "menor": |
425 |
|
comparador = "<" |
426 |
|
elif comparador == "igual" or comparador == "=": |
427 |
|
comparador = "==" |
428 |
|
elif comparador == "distinto" or comparador == "<>": |
429 |
|
comparador = "!=" |
430 |
|
elif comparador == "mayor_o_igual": |
431 |
|
comparador = ">=" |
432 |
|
elif comparador == "menor_o_igual": |
433 |
|
comparador = "<=" |
434 |
elif parametro["nombre"] == "valor": |
elif parametro["nombre"] == "valor": |
435 |
valor_requisito = valor |
valor_requisito = valor |
436 |
else: |
else: |
439 |
# Obtener el valor de la propiedad y ejecutar la serie que corresponda |
# Obtener el valor de la propiedad y ejecutar la serie que corresponda |
440 |
if len(parametros_resueltos) == 0: |
if len(parametros_resueltos) == 0: |
441 |
valor_propiedad = getattr(objeto_base, self.nombre, None) |
valor_propiedad = getattr(objeto_base, self.nombre, None) |
|
if valor_propiedad != None: |
|
|
comparacion = eval("valor_propiedad " + str(comparador) + " " + str(valor_requisito)) |
|
|
else: |
|
|
comparacion = 0 |
|
442 |
else: |
else: |
443 |
funcion = getattr(objeto_base, self.nombre, None) |
funcion = getattr(objeto_base, self.nombre, None) |
444 |
if funcion != None: |
if funcion != None: |
445 |
valor_propiedad = apply(funcion, (), parametros_resueltos) |
valor_propiedad = apply(funcion, (), parametros_resueltos) |
|
comparacion = eval("valor_propiedad " + str(comparador) + " " + str(valor_requisito)) |
|
446 |
else: |
else: |
447 |
comparacion = 0 |
valor_propiedad = None |
448 |
|
|
449 |
|
if valor_propiedad != None: |
450 |
|
if comparador == "es": |
451 |
|
expresion = str(valor_requisito) |
452 |
|
# Convertir la expresion regular de tipo ?* al estilo del módulo sre. |
453 |
|
expresion = "^" + expresion.replace("?", ".").replace("*", ".*") + "$" |
454 |
|
comparacion = sre.match(expresion, valor_propiedad) |
455 |
|
else: |
456 |
|
comparacion = eval("valor_propiedad " + str(comparador) + " " + str(valor_requisito)) |
457 |
|
else: |
458 |
|
comparacion = 0 |
459 |
|
|
460 |
if comparacion: |
if comparacion: |
461 |
return self.__cumplido.ejecutar(macros) |
return self.__cumplido.ejecutar(macros) |