hugoruscitti/pilas

View on GitHub
pilasengine/actores/animado.py

Summary

Maintainability
A
0 mins
Test Coverage
# -*- encoding: utf-8 -*-
# pilas engine: un motor para hacer videojuegos
#
# Copyright 2010-2014 - Hugo Ruscitti
# License: LGPLv3 (see http://www.gnu.org/licenses/lgpl.html)
#
# Website - http://www.pilas-engine.com.ar

from pilasengine.actores.actor import Actor
import copy


class Animado(Actor):
    """Representa un actor que tiene asociada una grilla con cuadros de animacion.

    Una de las variantes que introduce este actor es el
    método 'definir_cuadro', que facilita la animación de personajes.

    Por ejemplo, si tenemos una grilla con un pingüino, podríamos
    mostrarlo usando este código:

        >>> grilla = pilas.imagenes.cargar_grilla("pingu.png", 10)
        >>> actor = Animado(grilla)
        >>> actor.definir_cuadro(2)
        >>> actor.definir_cuadro(5)


    .. image:: ../../pilas/data/manual/imagenes/actores/pingu.png
    """

    def __init__(self, pilas, *k, **kv):
        """ Constructor del Actor.

        :param grilla: Grilla de imagenes obtenida mediante pilas.imagenes.cargar_grilla()
        :type grilla: `Grilla`
        :param x: Posición horizontal del Actor.
        :type x: int
        :param y: Posición vertical del Actor.
        :type y: int
        """
        Actor.__init__(self, pilas, *k, **kv)

    def pre_iniciar(self, x=0, y=0, grilla=None):
        self.imagen = copy.copy(grilla)
        self.definir_cuadro(0)

    def definir_cuadro(self, indice):
        """ Permite cambiar el cuadro de animación a mostrar

        :param indice: Número del frame de la grilla que se quiere monstrar.
        :type indice: int
        """
        self.imagen.definir_cuadro(indice)
        # FIX: Esta sentencia es muy ambigua, porque no todos actores se
        # deben centrar en ese punto.
        self.centro = ('centro', 'centro')