Package pilas :: Package actores :: Module cooperativista
[hide private]
[frames] | no frames]

Source Code for Module pilas.actores.cooperativista

  1  # -*- encoding: utf-8 -*- 
  2  # Pilas engine - A video game framework. 
  3  # 
  4  # Copyright 2010 - Hugo Ruscitti 
  5  # License: LGPLv3 (see http://www.gnu.org/licenses/lgpl.html) 
  6  # 
  7  # Website - http://www.pilas-engine.com.ar 
  8   
  9  import pilas 
 10  from pilas.actores import Actor 
 11  from pilas.comportamientos import Comportamiento 
 12   
 13  VELOCIDAD = 4 
 14   
15 -class Cooperativista(Actor):
16 """ Representa un Cooperativista que puede caminar y trabajar.""" 17
18 - def __init__(self, x=0, y=0):
19 """Constructor del Cooperativista 20 21 :param x: Posición horizontal de la aceituna. 22 :type x: int 23 :param y: Posición vertical de la aceituna. 24 :type y: int 25 """ 26 Actor.__init__(self, x=x, y=y) 27 self._cargar_animaciones() 28 self.hacer(Esperando()) 29 self.radio_de_colision = 30
30
31 - def _cargar_animaciones(self):
32 cargar = pilas.imagenes.cargar_grilla 33 self.animaciones = { 34 "ok": cargar("cooperativista/ok.png", 1), 35 "parado": cargar("cooperativista/parado.png", 1), 36 "camina": cargar("cooperativista/camina.png", 4), 37 # las siguientes estan sin usar... 38 "alerta": cargar("cooperativista/alerta.png", 2), 39 "trabajando": cargar("cooperativista/trabajando.png", 1), 40 "parado_sujeta": cargar("cooperativista/parado_sujeta.png", 1), 41 "camina_sujeta": cargar("cooperativista/camina_sujeta.png", 4), 42 }
43
44 - def definir_cuadro(self, indice):
45 """Define el cuadro de la animación del actor. 46 47 :param indice: el cuadro que la animación que se quiere mostrar. 48 """ 49 self.imagen.definir_cuadro(indice)
50
51 - def cambiar_animacion(self, nombre):
52 """Cambia la animación del Cooperativista. 53 54 :param nombre: El nombre de la animación que se quiere mostar. 55 """ 56 self.imagen = self.animaciones[nombre] 57 self.centro = ("centro", "abajo")
58
59 -class Esperando(Comportamiento):
60 """Clase que define un comportamiento del actor Cooperativista.""" 61
62 - def iniciar(self, receptor):
63 """Inicializa el comportamiento. 64 65 :param receptor: La referencia al actor. 66 """ 67 self.receptor = receptor 68 self.receptor.cambiar_animacion("parado") 69 self.receptor.definir_cuadro(0)
70
71 - def actualizar(self):
72 if pilas.escena_actual().control.izquierda: 73 self.receptor.hacer(Caminando()) 74 elif pilas.escena_actual().control.derecha: 75 self.receptor.hacer(Caminando()) 76 77 if pilas.escena_actual().control.arriba: 78 self.receptor.hacer(DecirOk())
79 80
81 -class Caminando(Comportamiento):
82 """Clase que define un comportamiento del actor Cooperativista.""" 83
84 - def __init__(self):
85 self.cuadros = [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3] 86 self.paso = 0
87
88 - def iniciar(self, receptor):
89 """Inicializa el comportamiento. 90 91 :param receptor: La referencia al actor. 92 """ 93 self.receptor = receptor 94 self.receptor.cambiar_animacion("camina")
95
96 - def actualizar(self):
97 self.avanzar_animacion() 98 99 if pilas.escena_actual().control.izquierda: 100 self.receptor.x -= VELOCIDAD 101 self.receptor.espejado = False 102 elif pilas.escena_actual().control.derecha: 103 self.receptor.x += VELOCIDAD 104 self.receptor.espejado = True 105 else: 106 self.receptor.hacer(Esperando())
107
108 - def avanzar_animacion(self):
109 self.paso += 1 110 111 if self.paso >= len(self.cuadros): 112 self.paso = 0 113 114 self.receptor.definir_cuadro(self.cuadros[self.paso])
115 116
117 -class DecirOk(Comportamiento):
118 """Clase que define un comportamiento del actor Cooperativista.""" 119
120 - def __init__(self):
121 self.paso = 0
122
123 - def iniciar(self, receptor):
124 """Inicializa el comportamiento. 125 126 :param receptor: La referencia al actor. 127 """ 128 self.receptor = receptor 129 self.receptor.cambiar_animacion("ok")
130
131 - def actualizar(self):
132 self.paso += 1 133 134 if self.paso > 50: 135 self.receptor.hacer(Esperando())
136