hugoruscitti/pilas

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

Summary

Maintainability
Test Coverage
{
    "content": "<h1 id=\"etiquetas\">Etiquetas</h1>\n<p>Las etiquetas nos permite clasificar actores y describir\na los actores de manera simple.</p>\n<p>Cada etiqueta es solamente una palabra, por ejemplo \"enemigo\",\n\"protagonista\", \"munici\u00f3n\" etc... y podemos vincularla\ncon cualquier actor o grupo, para se\u00f1alar el rol de ese actor\no grupo.</p>\n<p>La utilidad mas inmediata de las etiquetas es poder\nsimplificar la creaci\u00f3n de colisiones, que vimos en el\ncap\u00edtulo anterior.</p>\n<h2 id=\"conociendo-las-etiquetas\">Conociendo las Etiquetas</h2>\n<p>Cada actor que existe en pilas tiene un atributo <code>etiquetas</code>,\nque inicialmente tiene el nombre de la clase que origin\u00f3\nal actor, por ejemplo:</p>\n<pre><code>&gt;&gt;&gt; mono = pilas.actores.Mono()\n&gt;&gt;&gt; mono.etiquetas\n['mono']\n\n&gt;&gt;&gt; aceituna = pilas.actores.Aceituna()\n&gt;&gt;&gt; aceituna.etiquetas\n['aceituna']\n</code></pre>\n<p>y estas etiquetas, a su vez, se pueden a\u00f1adir usando el m\u00e9todo <code>agregar</code>:</p>\n<pre><code>&gt;&gt;&gt; mono.etiquetas.agregar('protagonista')\n['mono', 'protagonista']\n</code></pre>\n<h2 id=\"usando-grupos\">Usando grupos</h2>\n<p>Los grupos tambi\u00e9n nos brindan la posibilidad de consultar o definir las\netiquetas de varios actores al mismo tiempo:</p>\n<pre><code>naves = pilas.actores.Nave()\nnaves.etiquetas.agregar('enemigo')\n\nitems = pilas.actores.Banana()\nitems.etiquetas.agregar('comestible')\n\notro_grupo = pilas.actores.Manzana()\notro_grupo.etiquetas.agregar('comestible')\n</code></pre>\n\n<h2 id=\"anadiendo-colisiones-mediante-etiquetas\">A\u00f1adiendo colisiones mediante etiquetas</h2>\n<p>Ahora que podemos a\u00f1adir etiquetas a los actores, podemos describir las\ncolisiones de forma mas sencilla. </p>\n<p>Por ejemplo, si creamos un escenario con monedas y un mono que se pueda\nmover con el teclado as\u00ed:</p>\n<pre><code>mono = pilas.actores.Mono()\nmonedas = pilas.actores.Moneda() * 20\n\nmono.aprender('arrastrable')\n</code></pre>\n\n<p>podemos definir una acci\u00f3n de colisi\u00f3n simplemente indicando la funci\u00f3n\nde respuesta y las etiquetas que intervienen:</p>\n<pre><code>def capturar(mono, cosa):\n    cosa.eliminar()\n    mono.sonreir()\n\npilas.colisiones.agregar('mono', 'moneda', capturar)\n</code></pre>\n\n<p>Ahora, incluso aunque se elimine las monedas de la pantalla, si creamos\nnuevas van a seguir siendo \"comestibles\" por el mono:</p>\n<pre><code>mas_monedas = pilas.actores.Moneda() * 10\n</code></pre>\n\n<p>Incluso cualquier otra cosa que tenga estas etiquetas va a ser\ncapturado por el mono:</p>\n<pre><code>cajas = pilas.actores.Caja() * 10\ncajas.etiquetas.agregar('moneda')\n</code></pre>\n\n<p>Claro, lo ideal en este caso es definir las colisiones usando etiquetas\ngen\u00e9ricas como: 'comestible', 'enemigo', 'vida' etc...</p>\n", 
    "url": "/etiquetas/", 
    "language": "en", 
    "title": "Etiquetas"
}