pilas.actores.utils

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

# Source Code for Module pilas.actores.utils

     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 random
    10  import pilas
    11
    12 -def ordenar_actores_por_valor_z():
    13      "Ordena todos los actores para que se impriman con 'z' como criterio de orden."
    14      pilas.escena_actual().actores.sort()
    15
    16 -def insertar_como_nuevo_actor(actor):
    17      """Coloca a un actor en la lista de actores a imprimir en pantalla.
    18
    19      :param actor: Actor que se quiere comenzar a mostrar en pantalla.
    20      """
    21      pilas.escena_actual().actores.append(actor)
    22      actor.escena = pilas.escena_actual()
    23
    24 -def eliminar_a_todos():
    25      """Elimina a todos los actores de la escena."""
    26      a_eliminar = pilas.escena_actual().actores[1:]    # evita borrar el fondo.
    27
    28      for x in a_eliminar:
    29          x.eliminar()
    30
    31      pilas.escena_actual().actores = []
    32
    33 -def destruir_a_todos():
    34      """Elimina a los actores inmediatamente (evita que exploten o hagan algo)."""
    35      a_eliminar = pilas.escena_actual().actores
    36
    37      for x in a_eliminar:
    38          x.destruir()
    39
    40      pilas.escena_actual().actores = []
    41
    42 -def obtener_actor_en(x, y):
    43      """Intenta obtener el actor mas cerca de la pantalla (z mas pequeño) en la posición (x, y)
    44
    45      :param x: Posición horizontal del punto selección.
    46      :param y: Posición vertical del punto selección.
    47      """
    48
    49      # Busca el objeto que colisiones ordenando en sentido inverso.
    50      for sprite in pilas.escena_actual().actores[::-1]:
    51          if sprite.colisiona_con_un_punto(x, y):
    52              return sprite
    53
    54      return None
    55
    56
    57 -def fabricar(clase, cantidad=1, posiciones_al_azar=True, *k, **kv):
    58      """Genera muchas instancias de una clase particular asignando posiciones aleatorias.
    59
    60          >>> pilas.utils.fabricar(pilas.actores.Caja, 30)
    61
    62      :param clase: Clase del objeto a generar.
    63      :param cantidad: Cantidad de objetos que se van a crear de esa clase.
    64      :param posiciones_al_azar: True o False indicando si se tienen que dar posiciones al azar.
    65      """
    66      objetos_creados = []
    67
    68      for x in range(cantidad):
    69          if posiciones_al_azar:
    70              x = random.randint(-300, 300)
    71              y = random.randint(-200, 200)
    72          else:
    73              x = 0
    74              y = 0
    75
    76          kv['x'] = x
    77          kv['y'] = y
    78          nuevo = clase(*k, **kv)
    79          objetos_creados.append(nuevo)
    80
    81      return pilas.grupo.Grupo(objetos_creados)
    82