29 |
from personajenojugador import * |
from personajenojugador import * |
30 |
from sala import * |
from sala import * |
31 |
from utils import * |
from utils import * |
32 |
from timer import * |
from cronomine import * |
33 |
|
|
34 |
|
|
35 |
class InterfazPNJ(Controlador): |
class InterfazPNJ(Controlador): |
46 |
- __personaje (Personaje): el personaje que controlamos |
- __personaje (Personaje): el personaje que controlamos |
47 |
- __estado (string): el estado en el que se encuentra el interfaz |
- __estado (string): el estado en el que se encuentra el interfaz |
48 |
- __sub_estado (int): algunos estados tienen fases intermedias. Si no, None. |
- __sub_estado (int): algunos estados tienen fases intermedias. Si no, None. |
49 |
- __timer (Timer): temporizador usado opcionalmente |
- __crono (CronoMine): cronometro usado opcionalmente |
50 |
- __oponente (Personaje): otro personaje con quien el nuestro está combatiendo |
- __oponente (Personaje): otro personaje con quien el nuestro está combatiendo |
51 |
|
|
52 |
Los siguientes atributos provocan ajustes automáticos al ser modificados: |
Los siguientes atributos provocan ajustes automáticos al ser modificados: |
61 |
self.__personaje = None |
self.__personaje = None |
62 |
self.__estado = "" |
self.__estado = "" |
63 |
self.__sub_estado = None |
self.__sub_estado = None |
64 |
self.__timer = None |
self.__crono = None |
65 |
self.__oponente = None |
self.__oponente = None |
66 |
self.estado_normal() |
self.estado_normal() |
67 |
|
|
157 |
#%% func(personaje, result) |
#%% func(personaje, result) |
158 |
|
|
159 |
|
|
160 |
def lanzar_timer(self, segundos): |
def lanzar_crono(self, segundos_vencimiento): |
161 |
"""Lanza un temporizador que vence al cabo del numero de segundos indicado. |
"""Lanza un cronometro que vence al cabo del numero de segundos indicado. |
162 |
|
|
163 |
Se admiten decimales. |
Se admiten decimales. |
164 |
""" |
""" |
165 |
from mundo import Mundo |
from mundo import Mundo |
166 |
if self.timer != None: self.timer.stop() |
if self.crono != None: self.crono.parar() |
167 |
self.timer = Timer(Mundo.timer_handler, segundos, self.timeout) |
self.crono = CronoMine(Mundo.cronoMine_control, |
168 |
|
FechaHoraMineRel(segundos=segundos_vencimiento), |
169 |
|
self.vencimiento) |
170 |
|
|
171 |
|
|
172 |
def timeout(self, timer): |
def vencimiento(self, crono): |
173 |
"""Metodo llamado cuando vence el temporizador.""" |
"""Metodo llamado cuando vence el cronometro.""" |
174 |
|
|
175 |
self.timer = None |
self.crono = None |
176 |
|
|
177 |
# Llamar a la función correspondiente según estado |
# Llamar a la función correspondiente según estado |
178 |
nombre_func = "timeout_" + self.estado |
nombre_func = "vencimiento_" + self.estado |
179 |
if self.sub_estado != None: nombre_func += "_" + str(self.sub_estado) |
if self.sub_estado != None: nombre_func += "_" + str(self.sub_estado) |
180 |
|
|
181 |
func = getattr(self, nombre_func, None) |
func = getattr(self, nombre_func, None) |
182 |
if func == None: |
if func == None: |
183 |
print "ERROR: recibido timeout en estado " + self.estado + \ |
print "ERROR: recibido vencimiento en estado " + self.estado + \ |
184 |
((self.sub_estado != None and "_" + str(self.sub_estado)) or "") + \ |
((self.sub_estado != None and "_" + str(self.sub_estado)) or "") + \ |
185 |
((self.personaje != None and "(" + self.personaje.nombre + ")") or "") |
((self.personaje != None and "(" + self.personaje.nombre + ")") or "") |
186 |
else: |
else: |
209 |
#%% self.cbt_termina_combate() |
#%% self.cbt_termina_combate() |
210 |
#%% self.estado_normal() |
#%% self.estado_normal() |
211 |
#%% else: |
#%% else: |
212 |
#%% # Al poner un timer de 3 segundos, el combate funciona como |
#%% # Al poner un crono de 3 segundos, el combate funciona como |
213 |
#%% # una sucesion de golpes alternados cada 3 segundos. |
#%% # una sucesion de golpes alternados cada 3 segundos. |
214 |
#%% self.lanzar_timer(3) |
#%% self.lanzar_crono(3) |
215 |
#%% self.estado_combate() |
#%% self.estado_combate() |
216 |
#%% |
#%% |
217 |
#%% |
#%% |
234 |
#%% self.estado_combate() |
#%% self.estado_combate() |
235 |
#%% |
#%% |
236 |
#%% |
#%% |
237 |
#%% def timeout_combate(self): |
#%% def vencimiento_combate(self): |
238 |
#%% self.cbt_pegar() |
#%% self.cbt_pegar() |
239 |
#%% if (self.personaje.estado == "muerto") or (self.oponente.estado == "muerto"): |
#%% if (self.personaje.estado == "muerto") or (self.oponente.estado == "muerto"): |
240 |
#%% self.cbt_termina_combate() |
#%% self.cbt_termina_combate() |
241 |
#%% self.estado_normal() |
#%% self.estado_normal() |
242 |
#%% else: |
#%% else: |
243 |
#%% self.lanzar_timer(6) |
#%% self.lanzar_crono(6) |
244 |
#%% self.estado_combate() |
#%% self.estado_combate() |
245 |
#%% |
#%% |
246 |
#%% |
#%% |
297 |
#%% |
#%% |
298 |
#%% def cbt_termina_combate(self): |
#%% def cbt_termina_combate(self): |
299 |
#%% self.oponente = None |
#%% self.oponente = None |
300 |
#%% if self.timer != None: |
#%% if self.crono != None: |
301 |
#%% self.timer.stop() |
#%% self.crono.parar() |
302 |
#%% self.timer = None |
#%% self.crono = None |
303 |
|
|
304 |
|
|
305 |
# Código para pruebas unitarias del módulo. |
# Código para pruebas unitarias del módulo. |