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

Source Code for Module pilas.actores.pingu

  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 Pingu(Actor):
16 """Muestra a un pingüino que sabe caminar con el teclado. 17 18 .. image:: images/actores/pingu.png 19 20 Este actor responde al teclado, así que podremos 21 usar los direccionales del teclado ``izquierda``, ``arriba`` 22 y ``derecha``: 23 24 >>> pingu = pilas.actores.Pingu() 25 """ 26
27 - def __init__(self, x=0, y=0):
28 """Inicializa al actor. 29 30 :param x: Posición horizontal. 31 :param y: Posición vertical. 32 """ 33 Actor.__init__(self, x=x, y=y) 34 self.imagen = pilas.imagenes.cargar_grilla("pingu.png", 10) 35 self.definir_cuadro(4) 36 self.hacer(Esperando()) 37 self.radio_de_colision = 30 38 self.centro = ("centro", "abajo")
39
40 - def definir_cuadro(self, indice):
41 """Define el cuadro de la animación. 42 43 :param indice: Número de cuadro. 44 """ 45 self.imagen.definir_cuadro(indice)
46 47
48 -class Esperando(Comportamiento):
49 "Un actor en posicion normal o esperando a que el usuario pulse alguna tecla." 50
51 - def iniciar(self, receptor):
52 self.receptor = receptor 53 self.receptor.definir_cuadro(4)
54
55 - def actualizar(self):
56 if pilas.escena_actual().control.izquierda: 57 self.receptor.hacer(Caminando()) 58 elif pilas.escena_actual().control.derecha: 59 self.receptor.hacer(Caminando()) 60 61 if pilas.escena_actual().control.arriba: 62 self.receptor.hacer(Saltando())
63 64
65 -class Caminando(Comportamiento):
66 """Representa al personaje caminando por el escenario.""" 67
68 - def iniciar(self, receptor):
69 self.receptor = receptor 70 self.cuadros = [5, 5, 6, 6, 7, 7, 8, 8, 9, 9] 71 self.paso = 0
72
73 - def actualizar(self):
74 self.avanzar_animacion() 75 76 if pilas.escena_actual().control.izquierda: 77 self.receptor.x -= VELOCIDAD 78 elif pilas.escena_actual().control.derecha: 79 self.receptor.x += VELOCIDAD 80 else: 81 self.receptor.hacer(Esperando()) 82 83 if pilas.escena_actual().control.arriba: 84 self.receptor.hacer(Saltando())
85
86 - def avanzar_animacion(self):
87 self.paso += 1 88 89 if self.paso >= len(self.cuadros): 90 self.paso = 0 91 92 self.receptor.definir_cuadro(self.cuadros[self.paso])
93
94 -class Saltando(Comportamiento):
95 """Representa al actor saltando con animación.""" 96
97 - def iniciar(self, receptor):
98 self.dy = 10 99 self.receptor = receptor 100 self.receptor.definir_cuadro(0) 101 self.origen = self.receptor.y
102
103 - def actualizar(self):
104 self.receptor.y += self.dy 105 self.dy -= 0.3 106 107 if self.receptor.y < self.origen: 108 self.receptor.y = self.origen 109 self.receptor.hacer(Esperando()) 110 111 if pilas.escena_actual().control.izquierda: 112 self.receptor.x -= VELOCIDAD 113 elif pilas.escena_actual().control.derecha: 114 self.receptor.x += VELOCIDAD
115