Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/pilas/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'pilas/__init__.py')
-rw-r--r--pilas/__init__.py172
1 files changed, 172 insertions, 0 deletions
diff --git a/pilas/__init__.py b/pilas/__init__.py
new file mode 100644
index 0000000..87c2700
--- /dev/null
+++ b/pilas/__init__.py
@@ -0,0 +1,172 @@
+# -*- encoding: utf-8 -*-
+# pilas engine - a video game framework.
+#
+# copyright 2010 - hugo ruscitti
+# license: lgplv3 (see http://www.gnu.org/licenses/lgpl.html)
+#
+# website - http://www.pilas-engine.com.ar
+
+mundo = None
+bg = None
+
+import sys
+import utils
+from mundo import Mundo
+import actores
+import fondos
+import habilidades
+import eventos
+import sonidos
+import colores
+import atajos
+import escenas
+import ejemplos
+import interfaz
+
+__doc__ = """
+Módulo pilas
+============
+
+Pilas es una biblioteca para facilitar el desarrollo
+de videojuegos. Es útil para programadores
+principiantes o para el desarrollo de juegos casuales.
+
+Este módulo contiene las funciones principales
+para iniciar y ejecutar la biblioteca.
+"""
+
+if utils.esta_en_sesion_interactiva():
+ utils.cargar_autocompletado()
+
+def iniciar(ancho=640, alto=480, titulo='Pilas', usar_motor='qtgl',
+ rendimiento=60, modo='detectar', economico=True,
+ gravedad=(0, -90), pantalla_completa=False):
+ """
+ Inicia la ventana principal del juego con algunos detalles de funcionamiento.
+
+ Ejemplo de invocación:
+
+ >>> pilas.iniciar(ancho=320, alto=240)
+
+ .. image:: images/iniciar_320_240.png
+
+ Parámetros:
+
+ :ancho: el tamaño en pixels para la ventana.
+ :alto: el tamaño en pixels para la ventana.
+ :titulo: el titulo a mostrar en la ventana.
+ :usar_motor: el motor multimedia a utilizar, puede ser 'qt' o 'qtgl'.
+ :rendimiento: cantidad de cuadros por segundo a mostrar.
+ :modo: si se utiliza modo interactivo o no.
+ :economico: si tiene que evitar consumir muchos recursos de procesador
+ :gravedad: el vector de aceleracion para la simulacion de fisica.
+ :pantalla_completa: si debe usar pantalla completa o no.
+
+ """
+
+ global mundo
+
+ motor = __crear_motor(usar_motor)
+ mundo = Mundo(motor, ancho, alto, titulo, rendimiento, economico, gravedad, pantalla_completa)
+ escenas.Normal(colores.grisclaro)
+
+
+def ejecutar(ignorar_errores=False):
+ """Pone en funcionamiento las actualizaciones y dibujado.
+
+ Esta función es necesaria cuando se crea un juego
+ en modo ``no-interactivo``."""
+ mundo.ejecutar_bucle_principal(ignorar_errores)
+
+def terminar():
+ """Finaliza la ejecución de pilas y cierra la ventana principal."""
+ mundo.terminar()
+
+def ver(objeto, imprimir=True, retornar=False):
+ """Imprime en pantalla el codigo fuente asociado a un objeto o elemento de pilas."""
+ import inspect
+
+ try:
+ codigo = inspect.getsource(objeto.__class__)
+ except TypeError:
+ codigo = inspect.getsource(objeto)
+
+ if imprimir:
+ print codigo
+
+ if retornar:
+ return codigo
+
+def version():
+ """Retorna el número de version de pilas."""
+ import pilasversion
+
+ return pilasversion.VERSION
+
+def __crear_motor(usar_motor):
+ """Genera instancia del motor multimedia en base a un nombre.
+
+ Esta es una función interna y no debe ser ejecutada
+ excepto por el mismo motor pilas."""
+
+ if usar_motor == 'qt':
+ from motores import motor_qt
+ motor = motor_qt.Qt()
+ elif usar_motor == 'qtgl':
+ from motores import motor_qt
+ motor = motor_qt.QtGL()
+ else:
+ print "El motor multimedia seleccionado (%s) no esta disponible" %(usar_motor)
+ print "Las opciones de motores que puedes probar son 'qt' y 'qtgl'."
+ sys.exit(1)
+
+ return motor
+
+def reiniciar():
+ """Elimina todos los actores y vuelve al estado inicial."""
+ actores.utils.eliminar_a_todos()
+ mundo.reiniciar()
+
+anterior_texto = None
+
+def avisar(mensaje):
+ """Emite un mensaje en la ventana principal.
+
+ Este mensaje aparecerá en la parte inferior de la pantalla, por
+ ejemplo:
+
+ >>> pilas.avisar("Use la tecla <esc> para terminar el programa")
+ """
+ global anterior_texto
+ izquierda, derecha, arriba, abajo = utils.obtener_bordes()
+
+ if anterior_texto:
+ anterior_texto.eliminar()
+
+ texto = actores.Texto(mensaje)
+ texto.magnitud = 17
+ texto.centro = ("centro", "centro")
+ texto.izquierda = izquierda + 10
+ texto.color = colores.blanco
+ texto.abajo = abajo + 10
+ anterior_texto = texto
+
+def abrir_cargador():
+ """Abre un cargador de ejemplos con varios códigos de prueba.
+
+ Ejemplo:
+
+ >>> pilas.abrir_cargador()
+
+ El cargador de ejemplos se ve de esta forma:
+
+ .. image:: images/cargador.png
+ """
+ try:
+ import cargador
+
+ cargador.ejecutar()
+ except ImportError:
+ print "Lo siento, no tienes instalada la extesion de ejemplos."
+ print "Instale el paquete 'pilas-examples' para continuar."
+ return []