Guía de preguntas avanzadas
===========================


Obtengo errores en ingles al iniciar pilas ¿Que anda mal?
---------------------------------------------------------

Si al ejecutar pilas, ves un mensaje cómo el siguiente::

    X Error: RenderBadPicture (invalid Picture parameter) 163
    Extension: 149 (RENDER)
    Minor opcode: 8 (RenderComposite)
    Resource id: 0x4a0000e

Es muy probable que se deba al adaptador de video. Una forma
de solucionarlo es cambiar la linea de código::

    pilas.iniciar()

por::

    pilas.iniciar(usar_motor='qt')

El motivo de este problema, es que pilas usa una biblioteca llamada
OpenGL, y algunos equipos no lo tienen disponible o con algunos detalles
de configuración.


¿Que es OpenGL?, ¿Cómo se configura en mi equipo?
-------------------------------------------------

OpenGL es una biblioteca que usamos en pilas para que los gráficos
sean mucho mas rápidos y fluidos. OpenGL utiliza aceleración de hardware
y rutinas de optimización avanzadas.

El punto es, que tal vez tu equipo no lo soporte, o no esté correctamente
configurado.

Para saber si tu equipo tiene soporte para opengl, es conveniente que
ejecutes el comando::

    glxinfo | grep rende

Si tu equipo tiene soporte para opengl, tendrías que ver un mensaje
cómo el siguiente::

    direct rendering: Yes
    OpenGL renderer string: Quadro FX 570/PCI/SSE2


Luego, si no tienes soporte, puedes ejecutar el siguiente comando
y volver a intentar::

    sudo apt-get install freeglut3 freeglut3-dev




Obtengo errores de AttributeError por parte de pilas
----------------------------------------------------

El funcionamiento de pilas como módulo de python
es un poquito especial... porque sentencias
como ``pilas.actores`` no funcionarán a menos
que antes escribas ``pilas.iniciar()``.

Por lo tanto, te recomiendo que en tus programas
siempre comiences con un archivo que tenga
algo como esto:

.. code-block:: python

    import pilas
    pilas.iniciar()


es decir, tu programa principal tiene que importar
pilas y luego inicializarlo. Recién ahí podrás
usar el resto de los módulos de pilas.


¿Cómo puedo personalizar el dibujado de un actor?
-------------------------------------------------

Cada vez que se actualiza el bucle de juego
se llama al método ``dibujar`` de cada actor.

Si quieres personalizar por completo la forma en
que se dibuja un actor puedes redefinir el
método ``dibujar`` y listo.

Para mas referencias puedes ver el método ``dibujar``
de la clase ``Actor`` o el método ``dibujar`` de
la clase ``escena.Normal``, que en lugar
de pintar una imagen borra todo el fondo de pantalla.



¿A veces los sonidos no se reproducen?
--------------------------------------

sip... a veces los sonidos no se reproducen porque
python los libera de memoria mientras están sonando.

Entonces, para solucionar el problema tienes que
mantener viva la referencia al objeto ``Sonido`` cuando
quieras reproducir algo. Por ejemplo:

:Ejemplo incompleto: 

    .. code-block:: python

        def reproducir_sonido():
            mi_sonido_que_no_suena = pilas.sonidos.cargar("sonido.wav.")
            mi_sonido_que_no_suena.reproducir()

        reproducir_sonido()

:Ejemplo correcto:

    .. code-block:: python

        sonido = None

        def reproducir_sonido():
            sonido = pilas.sonidos.cargar("sonido.wav")
            sonido.reproducir()

        reproducir_sonido()
    
¿Cual es la diferencia?, en el primer ejemplo el sonido no
se reproducirá porque la referencia ``mi_sonido_que_no_suena`` se
eliminará cuando termine de ejecutar la función ``reproducir_sonido``, mientras
que en el segundo la referencia ``sonido`` seguirá existiendo mientras
el sonido esté reproduciéndose.


Tengo una consulta puntual, ¿quien me ayuda?
--------------------------------------------

Tenemos un foro de mensajes en donde puedes preguntar
lo que quieras sobre pilas, esta es la dirección
web:

http://www.losersjuegos.com.ar/foro/viewforum.php?f=22
