hugoruscitti/pilas

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

Summary

Maintainability
Test Coverage
{
    "content": "<h1 id=\"grupos\">Grupos</h1>\n<p>Ahora que podemos manejar a los actores de manera individual, vamos a ver como organizarlos en grupos.</p>\n<p>Organizar a los actores en grupos es \u00fatil porque generalmente\nbuscamos clasificar a los actores por caracter\u00edsticas y\ntratarlos a todos por igual. Por ejemplo, en un juego de naves\npodr\u00edamos tener un grupo de naves, un grupo de estrellas y un\ngrupo de disparos.</p>\n<h2 id=\"creando-grupos-de-actores\">Creando grupos de actores</h2>\n<p>Para crear varios actores de una misma clase\npodr\u00edamos ejecutar algo como lo que sigue:</p>\n<pre><code>bombas = pilas.actores.Bomba() * 5\n</code></pre>\n\n<p>es decir, creamos un actor y luego lo multiplicamos\npara construir un grupo con muchos actores de la misma\nespecie.</p>\n<p>Al crear un grupo de esta forma, todos los actores\nse colocar\u00e1n en posiciones aleatorias.</p>\n<p>Esto es lo que ver\u00edamos en la ventana de pilas:</p>\n<p><img alt=\"\" src=\"../imagenes/grupos/grupos_bombas.jpg\" /></p>\n<p>A partir de ahora, la referencia <code>bombas</code> nos servir\u00e1 para\ncontrolar a todas las bombas al mismo tiempo.</p>\n<p>Esta referencia (que llamamos <code>bombas</code>) es parecida a una lista de datos en <code>python</code>. Podr\u00edamos realizar operaciones t\u00edpicas como contar, recorrer o clasificar de la misma forma que se hace en el lenguaje <code>python</code>.</p>\n<p>Por ejemplo, para contar la cantidad de bombas que hemos creado y conocer sus coordenadas podemos ejecutar:</p>\n<pre><code class=\"python\">&gt;&gt;&gt; print &quot;hay&quot;, len(bombas), &quot;bombas&quot;\nhay 5 bombas\n\n&gt;&gt;&gt; for una_bomba in bombas:\n...     print una_bomba.x, una_bomba.y\n</code></pre>\n\n<p>Ahora bien, algo que hace un poquito diferente a los\ngrupos de las listas de python, es que los grupos\nte permiten alterar a varios actores al mismo tiempo\ncon mas facilidad.</p>\n<p>Por ejemplo, imagina que quieres hacer que todas las\nbombas aparezcan en el centro de la ventana. Podr\u00edas\nhacer algo c\u00f3mo esto:</p>\n<pre><code class=\"python\">bombas.x = 0\n</code></pre>\n\n<p>Y en la ventana obtendremos:</p>\n<p><img alt=\"\" src=\"../imagenes/grupos/grupos_bombas_x.jpg\" /></p>\n<p>Incluso, les podr\u00edamos ense\u00f1ar a las bombas a reaccionar\ncomo si fueran pelotas, es decir, que reboten e interact\u00faen\ncon la aceleraci\u00f3n gravitatoria:</p>\n<pre><code>bombas.aprender(pilas.habilidades.RebotarComoPelota)\n</code></pre>\n\n<p>Ahora tendr\u00e1s algo mucho mas interesante, un mont\u00f3n de\nactores rebotando entre s\u00ed:</p>\n<p><img alt=\"\" src=\"../imagenes/grupos/grupos_bombas_como_pelota.jpg\" /></p>\n<p>Un consejo, la gravedad del escenario se puede modificar\nusando una sentencia como la que sigue:</p>\n<pre><code>pilas.fisica.gravedad_x = 200\npilas.fisica.gravedad_y = 0\n</code></pre>\n\n<p>En este caso <code>gravedad_x</code> con un valor de 200 va a empujar los objetos\nhacia la derecha de la pantalla, mientras que los objetos en el eje vertical\nvan a flotar.</p>\n<p>Intent\u00e1 ver esto en funcionamiento, \u00a1es divertido!</p>\n<h2 id=\"creando-un-grupo-para-distintos-actores\">Creando un grupo para distintos actores</h2>\n<p>Hay ocasiones, donde quieres tener un grupo\ndesde cero e ir agregando actores en \u00e9l.</p>\n<p>Esto se puede hacer f\u00e1cilmente, e incluso\nabre las puertas a que puedas mezclar actores\nde distintas especies.</p>\n<p>Para crear un grupo vac\u00edo tienes que crear\nun objeto de la clase Grupo:</p>\n<pre><code>mi_grupo = pilas.actores.Grupo()\n</code></pre>\n\n<p>y luego, para a\u00f1adir actores al grupo puedes usar el\nm\u00e9todo <code>agregar</code> e indicar la referencia del actor\nque quieres agregar:</p>\n<pre><code>bomba = pilas.actores.Bomba()\npelota = pilas.actores.Pelota()\n\nmi_grupo.agregar(bomba)\nmi_grupo.agregar(pelota)\n\nmi_grupo.escala = [2]\n</code></pre>\n\n<p><img alt=\"\" src=\"../imagenes/grupos/grupos_personalizado_escala.jpg\" /></p>\n<p>Un detalle a tener en cuenta, el m\u00e9todo <code>agregar</code> no solo te permite agregar actores, tambi\u00e9n podr\u00edas tomar un grupo y agregarle con algo como <code>grupo.agregar(otro_grupo)</code>.</p>\n", 
    "url": "/grupos/", 
    "language": "en", 
    "title": "Grupos"
}