{"id":951,"date":"2026-04-02T01:20:17","date_gmt":"2026-04-02T04:20:17","guid":{"rendered":"https:\/\/www2.ic.uff.br\/pplay\/?page_id=951"},"modified":"2026-04-02T01:20:17","modified_gmt":"2026-04-02T04:20:17","slug":"sprites-2-0","status":"publish","type":"page","link":"http:\/\/www2.ic.uff.br\/pplay\/sprites-2-0\/","title":{"rendered":"Sprites"},"content":{"rendered":"\n<div class=\"doc-container\">\n    <div class=\"doc-header\">\n        <h1>Criando Sprites Animados<\/h1>\n        <div class=\"doc-badge\">M\u00f3dulo: PPlay.sprite | Dificuldade: Intermedi\u00e1rio<\/div>\n        <p>O <code>Sprite<\/code> \u00e9 o &#8220;Ator&#8221; principal do seu jogo. Ele n\u00e3o apenas desenha uma imagem na tela, mas sabe como cortar <em>Spritesheets<\/em> (tiras de anima\u00e7\u00e3o) automaticamente com base no tempo.<\/p>\n    <\/div>\n\n    <div class=\"doc-section\">\n        <h2>1. Cortando Anima\u00e7\u00f5es<\/h2>\n        <p>Voc\u00ea n\u00e3o precisa calcular os pixels de corte. Informe quantos quadros a imagem tem, e a engine far\u00e1 o resto.<\/p>\n        <pre class=\"doc-code\"><code>from PPlay.sprite import Sprite\nfrom PPlay.window import Window\n\njanela = Window(800, 600, \"Anima\u00e7\u00f5es\")\n\n# Cria um personagem a partir de uma imagem com 4 colunas\nplayer = Sprite(\"mario_correndo.png\", 4)\nplayer.set_position(100, 100)\n\n# A anima\u00e7\u00e3o completa dura 500 milissegundos (meio segundo)\nplayer.set_total_duration(500)\n\nwhile True:\n    janela.set_background_color(\"black\")\n    \n    # Move o personagem no eixo X\n    player.move_key_x(300)\n    \n    # O update() do Sprite troca o quadro baseado no Delta Time!\n    player.update()\n    player.draw()\n    \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: Resource Cache (Flyweight Pattern)<\/div>\n        <p>Na Power PPlay 2.0, se voc\u00ea criar 1.000 moedas copiando a mesma linha <code>Sprite(\"moeda.png\")<\/code>, o computador n\u00e3o vai ler a imagem no HD 1.000 vezes. O motor gr\u00e1fico usa um cache em mem\u00f3ria RAM. Ao carregar a primeira vez, as outras 999 ser\u00e3o apenas &#8220;clones virtuais&#8221;, garantindo performance absurda!<\/p>\n    <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Criando Sprites Animados M\u00f3dulo: PPlay.sprite | Dificuldade: Intermedi\u00e1rio O Sprite \u00e9 o &#8220;Ator&#8221; principal do seu jogo. Ele n\u00e3o apenas desenha uma imagem na tela, mas sabe como cortar Spritesheets (tiras de anima\u00e7\u00e3o) automaticamente com base no tempo. 1. Cortando Anima\u00e7\u00f5es Voc\u00ea n\u00e3o precisa calcular os pixels de corte. Informe quantos quadros a imagem tem, [&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\/951"}],"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=951"}],"version-history":[{"count":1,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/951\/revisions"}],"predecessor-version":[{"id":953,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/951\/revisions\/953"}],"wp:attachment":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/media?parent=951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}