pilas.control.Control

Package pilas :: Module control :: Class Control |
[hide private]
[frames] | no frames]

# Class Control

source code

    object --+
             |
            Control

Representa un control de teclado sencillo.

Este objeto permite acceder al estado del teclado usando atributos.

Por ejemplo, con este objeto, para saber si el usuario está pulsando el direccional hacia la izquierda de puedes ejecutar:

       if pilas.escena_actual().control.izquierda:
           print 'Ha pulsado hacia la izquierda'

Es decir, si bien Control es una clase, no hace falta instanciarla. Ya existe un objeto que se puede consultar bajo el nombre ``pilas.escena_actual().control``.

Entonces, una vez que tienes la referencia para consultar, los atributos que tiene este objeto control son:

       izquierda
       derecha
       arriba
       abajo
       boton

Cada uno de estos atributos te pueden devolver True, o False, indicando si el control está pulsado o no.

Ten en cuenta que este objeto también se puede imprimir usando la sentencia ``print``. Esto es útil para ver el estado completo del control de una sola vez:

    >>> print pilas.mundo.control
    <Control izquierda: False derecha: False arriba: False abajo: False boton: False>

También tienes la posibilidad de crearte un control estableciendo las teclas personalizadas. Para ello debes crearte un diccionario con las claves izquierda, derecha, arriba, abajo y boton. Con las constantes de pilas.simbolos, puedes asignar una tecla a cada una de las entradas del diccionario.

    >>>    teclas = {pilas.simbolos.a: 'izquierda',
                              pilas.simbolos.d: 'derecha',
                              pilas.simbolos.w: 'arriba',
                              pilas.simbolos.s: 'abajo',
                              pilas.simbolos.ESPACIO: 'boton'}

    >>>    mi_control = pilas.control.Control(pilas.escena_actual(), teclas)

Consultando controles desde un actor:

Una forma habitual de usar los controles, es consultarlos directamente desde el codigo de un actor.

Para consultar los controles para cambiar la posicion horizontal de un actor podrías implementar el método ``actualizar``:

       class Patito(pilas.actores.Actor):

           def __init__(self):
               pilas.actores.Actor.__init__(self)
               self.imagen = "patito.png"

           def actualizar(self):
               if pilas.escena_actual().control.izquierda:
                   self.x -= 5
                   self.espejado = True
               elif pilas.escena_actual().control.derecha:
                   self.x += 5
                   self.espejado = False

.. image:: ../../pilas/data/patito.png

Instance Methods | [hide private]
__init__(self, escena, mapa_teclado=None) x.__init__(...) initializes x; see help(type(x)) for signature | source code
cuando_pulsa_una_tecla(self, evento) | source code
cuando_suelta_una_tecla(self, evento) | source code
procesar_cambio_de_estado_en_la_tecla(self, codigo, estado) | source code
__str__(self) str(x) | source code
limpiar(self) | source code
Inherited from `object`: `__delattr__`, `__format__`, `__getattribute__`, `__hash__`, `__new__`, `__reduce__`, `__reduce_ex__`, `__repr__`, `__setattr__`, `__sizeof__`, `__subclasshook__`

Properties | [hide private]
Inherited from `object`: `__class__`

Method Details | [hide private]

### __init__(self, escena, mapa_teclado=None) (Constructor) | source code
x.__init__(...) initializes x; see help(type(x)) for signature Overrides: object.__init__ (inherited documentation)

### __str__(self) (Informal representation operator) | source code
str(x) Overrides: object.__str__ (inherited documentation)