Package pilas :: Module grupo
[hide private]
[frames] | no frames]

Source Code for Module pilas.grupo

 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  import random 
 9   
10 -class Grupo(list):
11 """Un grupo es un contenedor que funciona como una lista normal, pero mejorada. 12 13 Los grupos pueden contener actores, y permite que a todos los actores 14 se los pueda tratar como uno. 15 16 Por ejemplo si tienes un contenedor con 20 actores, podrías ampliar 17 el tamaño de todos ellos juntos usando la sentencia: 18 19 >>> grupo = pilas.atajos.fabricar(pilas.actores.Mono, 20) 20 >>> grupo.escala = 2 21 """ 22
23 - def __getattr__(self, attr):
24 """Esta funcion se asegura de que cada vez que se invoque a un metodo 25 del grupo, en realidad, el grupo va a invocar a ese metodo pero 26 en todos sus elementos. Algo asi como un map.""" 27 28 def map_a_todos(*k, **kw): 29 for a in self: 30 funcion = getattr(a, attr) 31 funcion(*k, **kw)
32 33 return map_a_todos
34
35 - def __setattr__(self, atributo, valor):
36 for a in self: 37 setattr(a, atributo, valor)
38
39 - def desordenar(self):
40 """Les asigna una posición aleatoria a todos los actores del grupo.""" 41 for a in self: 42 a.x = random.randint(-300, 300) 43 a.y = random.randint(-200, 200)
44
45 - def limpiar(self):
46 """Elimina a todos los actores dentro del grupo.""" 47 eliminar = list(self) 48 for e in eliminar: 49 e.eliminar()
50