{"id":961,"date":"2026-04-02T01:27:47","date_gmt":"2026-04-02T04:27:47","guid":{"rendered":"https:\/\/www2.ic.uff.br\/pplay\/?page_id=961"},"modified":"2026-04-02T01:27:47","modified_gmt":"2026-04-02T04:27:47","slug":"grupos-2-0","status":"publish","type":"page","link":"http:\/\/www2.ic.uff.br\/pplay\/grupos-2-0\/","title":{"rendered":"Grupos"},"content":{"rendered":"\n<div class=\"doc-container\">\n    <div class=\"doc-header\">\n        <h1>Colis\u00e3o em Massa (ObjectGroup)<\/h1>\n        <div class=\"doc-badge\">M\u00f3dulo: PPlay.object_group | Dificuldade: Intermedi\u00e1rio<\/div>\n        <p>Trabalhar com listas padr\u00e3o do Python (<code>[]<\/code>) para gerenciar centenas de tiros e inimigos causa lentid\u00e3o e erros ao remover objetos. O <strong>ObjectGroup<\/strong> \u00e9 uma &#8220;pasta inteligente&#8221; que resolve tudo em uma linha.<\/p>\n    <\/div>\n\n    <div class=\"doc-section\">\n        <h2>1. Gerenciando Hordas<\/h2>\n        <p>O <code>ObjectGroup<\/code> automatiza os loops de <em>draw<\/em> e <em>update<\/em>, limpando o seu c\u00f3digo principal.<\/p>\n        <pre class=\"doc-code\"><code>from PPlay.object_group import ObjectGroup\nfrom PPlay.sprite import Sprite\n\n# Instancia os grupos\ntiros = ObjectGroup()\nzumbis = ObjectGroup()\n\n# Adiciona 50 zumbis\nfor i in range(50):\n    z = Sprite(\"zumbi.png\")\n    z.set_position(i * 40, 200)\n    zumbis.add(z)\n\nwhile True:\n    # L\u00f3gica do Tiro\n    if teclado.key_down(\"SPACE\"):\n        tiros.add(Sprite(\"laser.png\"))\n\n    # A M\u00c1GICA DA COLIS\u00c3O (Sem loops complexos!)\n    for bala in tiros.get_all():\n        atingido = zumbis.collided(bala) # Retorna quem levou o tiro\n        \n        if atingido:\n            zumbis.remove(atingido) # Remove da mem\u00f3ria e da tela!\n            tiros.remove(bala)\n            print(\"Zumbi Eliminado!\")\n\n    # Desenha 50 zumbis e todas as balas de uma vez\n    zumbis.draw()\n    tiros.draw()\n    janela.update()<\/code><\/pre>\n    <\/div>\n\n    <div class=\"doc-tip\">\n        <div class=\"doc-tip-title\">\ud83d\udca1 Dica do S\u00eanior: Preven\u00e7\u00e3o de Memory Leaks<\/div>\n        <p>Seja cuidadoso: objetos que saem da tela continuam existindo na mem\u00f3ria. Sempre fa\u00e7a uma checagem simples no seu loop para dar <code>.remove()<\/code> em balas que passaram do limite da janela (ex: <code>if bala.x > 2000: tiros.remove(bala)<\/code>). O <code>ObjectGroup<\/code> cuida do Garbage Collector do Python para voc\u00ea.<\/p>\n    <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Colis\u00e3o em Massa (ObjectGroup) M\u00f3dulo: PPlay.object_group | Dificuldade: Intermedi\u00e1rio Trabalhar com listas padr\u00e3o do Python ([]) para gerenciar centenas de tiros e inimigos causa lentid\u00e3o e erros ao remover objetos. O ObjectGroup \u00e9 uma &#8220;pasta inteligente&#8221; que resolve tudo em uma linha. 1. Gerenciando Hordas O ObjectGroup automatiza os loops de draw e update, limpando [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"tutorial-template.php","meta":{"footnotes":""},"_links":{"self":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/961"}],"collection":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/comments?post=961"}],"version-history":[{"count":1,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/961\/revisions"}],"predecessor-version":[{"id":963,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/961\/revisions\/963"}],"wp:attachment":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/media?parent=961"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}