hugoruscitti/pilas

View on GitHub
data/manual/comportamientos/index.json

Summary

Maintainability
Test Coverage
{
    "content": "<h2 id=\"comportamientos\">Comportamientos</h2>\n<p>En el desarrollo de videojuegos es conveniente\ntener una forma de indicarle a los actores\nuna rutina o tarea para que la realicen.</p>\n<p>En pilas usamos el concepto de comportamiento. Un\ncomportamiento es un objeto que simboliza una\nacci\u00f3n a realizar por un actor.</p>\n<p>La utilidad de usar componentes es que puedes\nasociarlos y intercambiarlos libremente para\nlograr efectos \u00fatiles.</p>\n<p>Por ejemplo: un guardia de un juego de acci\u00f3n puede ir de\nun lado a otro en un pasillo:</p>\n<ul>\n<li>caminar hacia la izquierda hasta el fin del pasillo.</li>\n<li>dar una vuelta completa.</li>\n<li>caminar hacia la derecha hasta el fin del pasillo.</li>\n<li>dar una vuelta completa.</li>\n<li>y repetir ...</li>\n</ul>\n<p>En este caso hay 4 comportamientos, y queda en nuestro\ncontrol si queremos que luego de los 4 comportamientos\ncomience nuevamente.</p>\n<h2 id=\"un-ejemplo-ir-de-un-lado-a-otro\">Un ejemplo, ir de un lado a otro</h2>\n<p>Veamos un ejemplo sencillo, vamos a crear un actor Mono\ny decirle que se mueva de izquierda a derecha una\nsola vez:</p>\n<pre><code>import pilasengine\n\npilas = pilasengine.iniciar()\nmono = pilas.actores.Mono()\n\npasos = 200\n\nmono.hacer(\"Avanzar\", pasos)\n\n# Dar la vuelta.\nmono.rotacion = [180]\n\nmono.hacer(\"Avanzar\", pasos)\n\n# Solo necesario al ejecutar en scripts.\npilas.ejecutar()\n</code></pre>\n<h2 id=\"listado-de-todos-los-comportamientos-existentes\">Listado de todos los Comportamientos existentes</h2>\n<table>\n<thead>\n<tr>\n<th><strong>Evento</strong></th>\n<th><strong>Parametros</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Proyectil</td>\n<td>velocidad_maxima, aceleracion, angulo_de_movimiento, gravedad</td>\n</tr>\n<tr>\n<td>Saltar</td>\n<td>velocidad_inicial, cuando_termina</td>\n</tr>\n<tr>\n<td>Avanzar</td>\n<td>pasos, velocidad</td>\n</tr>\n<tr>\n<td>Girar</td>\n<td>delta, velocidad</td>\n</tr>\n<tr>\n<td>Orbitar</td>\n<td>x, y, radio, velocidad, direccion</td>\n</tr>\n<tr>\n<td>OrbitarSobreActor</td>\n<td>actor, radio, velocidad, direccion</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"comportamientos-personalizados\">Comportamientos personalizados</h2>\n<p>Para crear un comportamiento personalizado necesitamos crear una\nclase que herede de <code>pilasengine.comportamientos.Comportamiento</code> y\nluego implementar los m\u00e9todos <code>iniciar</code> y <code>ejecutar</code>.</p>\n<pre><code>class Desaparecer(pilasengine.comportamientos.Comportamiento):\n\n    def iniciar(self, receptor):\n        self.receptor = receptor\n\n    def actualizar(self):\n        if self.receptor.transparencia &lt; 100:\n            self.receptor.transparencia += 1\n        else:\n            # Con retornar True le indicamos a pilas que este\n            # comportamiento termin\u00f3 y tiene que pasar al siguiente.\n            return True\n\nmono = pilas.actores.Mono()\nmono.hacer(\"Desaparecer\")\n</code></pre>\n<h2 id=\"encadenando-comportamientos\">Encadenando comportamientos</h2>\n<p>Los comportamientos de los actores est\u00e1n dise\u00f1ados para encadenarse, y que\nse puedan reproducir uno detr\u00e1s de otro. Por ejemplo:</p>\n<pre><code>mono = pilas.actores.Mono()\nmono.hacer(\"Saltar\")\nmono.hacer(\"Avanzar\", 200)\nmono.hacer(\"Saltar\")\n</code></pre>\n", 
    "url": "/comportamientos/", 
    "language": "en", 
    "title": "Comportamientos"
}