pilas.actores.cooperativista

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