{"id":40,"date":"2024-06-07T08:45:17","date_gmt":"2024-06-07T08:45:17","guid":{"rendered":"http:\/\/pplay.local\/?page_id=40"},"modified":"2026-09-14T23:16:36","modified_gmt":"2026-09-15T02:16:36","slug":"download","status":"publish","type":"page","link":"http:\/\/www2.ic.uff.br\/pplay\/download\/","title":{"rendered":"Download e Instala\u00e7\u00e3o"},"content":{"rendered":"\n<div class=\"doc-container\">\n\n  <div class=\"doc-header\">\n    <span class=\"doc-badge\">Vers\u00e3o est\u00e1vel \u00b7 documenta\u00e7\u00e3o 2.1<\/span>\n    <h1>Download e instala\u00e7\u00e3o<\/h1>\n  <\/div>\n\n  <p>\n    Baixe a engine, instale o Pygame e coloque uma janela na tela. Do zero ao primeiro\n    programa rodando s\u00e3o <strong>tr\u00eas passos e cinco linhas de c\u00f3digo<\/strong>.\n  <\/p>\n\n  <!-- ============ BAIXAR ============ -->\n  <div class=\"doc-section\">\n    <h2>1. Baixe a engine<\/h2>\n\n    <div class=\"dl-destaque\">\n      <div>\n        <h3>Power PPlay<\/h3>\n        <p>\n          A vers\u00e3o mais recente da engine, direto do reposit\u00f3rio oficial.\n          Cerca de 2&nbsp;MB, sem depend\u00eancias al\u00e9m do Pygame.\n        <\/p>\n      <\/div>\n      <div class=\"dl-acoes\">\n        <a class=\"pp-btn pp-btn-primary\" href=\"https:\/\/github.com\/Kronohdev\/Power-PPlay\/archive\/refs\/heads\/main.zip\">\n          <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 4v11M7 11l5 5 5-5M5 20h14\"\/><\/svg>\n          Baixar .zip\n        <\/a>\n        <a class=\"pp-btn pp-btn-ghost\" href=\"https:\/\/github.com\/Kronohdev\/Power-PPlay\" target=\"_blank\" rel=\"noopener\">\n          Ver no GitHub\n        <\/a>\n      <\/div>\n    <\/div>\n\n    <table class=\"doc-table\">\n      <thead><tr><th>Tamb\u00e9m dispon\u00edvel<\/th><th>Para qu\u00ea<\/th><th><\/th><\/tr><\/thead>\n      <tbody>\n        <tr>\n          <td><strong>PPlay 1.1<\/strong><\/td>\n          <td>Vers\u00e3o did\u00e1tica original, usada nas turmas anteriores. A 2.x roda o c\u00f3digo dela sem altera\u00e7\u00e3o \u2014 veja a ponte de retrocompatibilidade.<\/td>\n          <td><a href=\"http:\/\/www2.ic.uff.br\/pplay\/wp-content\/uploads\/2024\/06\/PPlay1.1.zip\">Baixar .zip<\/a><\/td>\n        <\/tr>\n        <tr>\n          <td><strong>Recursos gratuitos<\/strong><\/td>\n          <td>Sprites, folhas de anima\u00e7\u00e3o, efeitos sonoros, trilhas e tilesets para usar nos seus jogos.<\/td>\n          <td><a href=\"\/pplay\/recursos\/\">Ver acervo<\/a><\/td>\n        <\/tr>\n      <\/tbody>\n    <\/table>\n  <\/div>\n\n  <!-- ============ PRE-REQUISITOS ============ -->\n  <div class=\"doc-section\">\n    <h2>2. Pr\u00e9-requisitos<\/h2>\n    <ul>\n      <li><strong>Python 3.8 ou superior.<\/strong> Recomendado 3.10 ou mais novo.<\/li>\n      <li><strong>Pygame-CE<\/strong> (<em>Community Edition<\/em>) ou Pygame padr\u00e3o.<\/li>\n    <\/ul>\n\n    <div class=\"doc-code\">pip install pygame-ce<\/div>\n\n    <div class=\"doc-tip\">\n      <div class=\"doc-tip-title\">\ud83d\udca1 Dica do S\u00eanior: qual Pygame instalar<\/div>\n      <p>\n        Prefira o <code>pygame-ce<\/code>. \u00c9 o mesmo projeto, mantido pela comunidade, com\n        corre\u00e7\u00f5es e recursos mais recentes. Se voc\u00ea j\u00e1 tem o <code>pygame<\/code> cl\u00e1ssico\n        instalado, desinstale-o antes \u2014 os dois usam o mesmo nome de m\u00f3dulo e brigam entre si:\n      <\/p>\n      <div class=\"doc-code\">pip uninstall pygame<\/div>\n    <\/div>\n  <\/div>\n\n  <!-- ============ ESTRUTURA ============ -->\n  <div class=\"doc-section\">\n    <h2>3. Onde a engine fica<\/h2>\n    <p>\n      A PPlay <strong>n\u00e3o \u00e9 instalada pelo <code>pip<\/code><\/strong>. Depois de extrair o\n      <code>.zip<\/code>, copie a pasta <code>PPlay\/<\/code> para dentro do seu projeto, no\n      <strong>mesmo n\u00edvel<\/strong> do <code>main.py<\/code>.\n    <\/p>\n\n    <div class=\"doc-code\">meu_jogo\/\n|&#8211; PPlay\/              &lt;- a engine (copie a pasta inteira aqui)\n|   |&#8211; __init__.py\n|   |&#8211; window.py\n|   |&#8211; gameobject.py\n|   |&#8211; gameimage.py\n|   |&#8211; animation.py\n|   |&#8211; sprite.py\n|   |&#8211; physics.py\n|   +&#8211; &#8230;             (24 modulos ao todo)\n|&#8211; assets\/             &lt;- suas imagens, sons e mapas\n|   |&#8211; heroi.png\n|   +&#8211; fase1.txt\n+&#8211; main.py             &lt;- seu jogo<\/div>\n\n    <div class=\"doc-tip\" style=\"background:rgba(255,122,107,.1);border-color:rgba(255,122,107,.35);border-left-color:var(--crit)\">\n      <div class=\"doc-tip-title\" style=\"color:var(--crit)\">\ud83d\udc1e Armadilha: o erro n\u00famero um<\/div>\n      <p>\n        <code>ModuleNotFoundError: No module named 'PPlay'<\/code> significa, quase sempre, que a\n        pasta <code>PPlay\/<\/code> n\u00e3o est\u00e1 no mesmo n\u00edvel do <code>main.py<\/code>. Ao extrair o\n        <code>.zip<\/code> \u00e9 comum acabar com <code>meu_jogo\/Power-PPlay-main\/PPlay\/<\/code> \u2014 uma\n        pasta a mais no caminho. Suba a pasta <code>PPlay\/<\/code> um n\u00edvel e o erro desaparece.\n      <\/p>\n    <\/div>\n  <\/div>\n\n  <!-- ============ INTEGRIDADE ============ -->\n  <div class=\"doc-section\">\n    <h2>4. A verifica\u00e7\u00e3o autom\u00e1tica de integridade<\/h2>\n    <p>\n      Ao importar qualquer m\u00f3dulo da engine, o <code>PPlay\/__init__.py<\/code> confere se os\n      componentes vitais existem e avisa no terminal se algum estiver faltando:\n    <\/p>\n\n    <div class=\"doc-code\">COMPONENTES_VITAIS = [&#8220;window.py&#8221;, &#8220;sprite.py&#8221;, &#8220;physics.py&#8221;, &#8220;gameimage.py&#8221;,\n                      &#8220;camera.py&#8221;, &#8220;collision.py&#8221;, &#8220;animation.py&#8221;]<\/div>\n\n    <p>\n      Se aparecer <code>ERRO DE INTEGRIDADE: Faltando [...]<\/code>, a c\u00f3pia da engine est\u00e1\n      incompleta \u2014 baixe de novo e copie a pasta inteira.\n    <\/p>\n    <p>\n      Em seguida, o mesmo arquivo ativa a <strong>ponte de retrocompatibilidade<\/strong>\n      (<code>retro_bridge.py<\/code>), que injeta na engine 2.x os nomes de m\u00e9todo da PPlay 1.0.\n      \u00c9 o que permite que trabalhos antigos rodem no motor novo sem altera\u00e7\u00e3o nenhuma.\n    <\/p>\n  <\/div>\n\n  <!-- ============ PRIMEIRO PROGRAMA ============ -->\n  <div class=\"doc-section\">\n    <h2>5. O primeiro programa<\/h2>\n\n    <div class=\"doc-code\">from PPlay.window import Window\n\njanela = Window(800, 600, &#8220;Meu Primeiro Jogo&#8221;)\n\nwhile True:\n    janela.set_background_color(&#8220;darkblue&#8221;)\n    janela.update()<\/div>\n\n    <p>S\u00e3o cinco linhas \u00fateis. O que cada uma faz:<\/p>\n\n    <table class=\"doc-table\">\n      <thead><tr><th>Linha<\/th><th>O que acontece<\/th><\/tr><\/thead>\n      <tbody>\n        <tr>\n          <td><code>from PPlay.window import Window<\/code><\/td>\n          <td>Traz a classe <code>Window<\/code>. N\u00e3o \u00e9 preciso chamar <code>pygame.init()<\/code>: o construtor da janela faz isso se ainda n\u00e3o tiver sido feito.<\/td>\n        <\/tr>\n        <tr>\n          <td><code>Window(800, 600, ...)<\/code><\/td>\n          <td>Cria a janela real e, dentro dela, o <em>buffer virtual<\/em> de 800\u00d7600 onde todo o desenho acontece. Tamb\u00e9m instancia <code>janela.keyboard<\/code> e <code>janela.mouse<\/code>.<\/td>\n        <\/tr>\n        <tr>\n          <td><code>while True:<\/code><\/td>\n          <td>\u00c9 o <em>game loop<\/em>. Roda at\u00e9 o programa terminar.<\/td>\n        <\/tr>\n        <tr>\n          <td><code>set_background_color(...)<\/code><\/td>\n          <td>Define a cor com que o buffer ser\u00e1 limpo ao fim do frame. Aceita nome (<code>\"darkblue\"<\/code>) ou tupla RGB (<code>(20, 24, 40)<\/code>).<\/td>\n        <\/tr>\n        <tr>\n          <td><code>janela.update()<\/code><\/td>\n          <td>Fecha o frame: projeta o buffer na tela, limpa, e processa a fila de eventos \u2014 incluindo o bot\u00e3o de fechar e o <strong>F11<\/strong>.<\/td>\n        <\/tr>\n      <\/tbody>\n    <\/table>\n\n    <div class=\"doc-tip\">\n      <div class=\"doc-tip-title\">\ud83d\udca1 Dica do S\u00eanior: experimente agora<\/div>\n      <p>\n        Antes de seguir, mexa neste c\u00f3digo: troque <code>\"darkblue\"<\/code> por\n        <code>(255, 0, 255)<\/code>; mude a janela para <code>Window(400, 300, ...)<\/code> e note\n        que tudo continua proporcional; aperte <strong>F11<\/strong>; arraste a borda da janela e\n        observe as barras pretas aparecerem.\n      <\/p>\n    <\/div>\n  <\/div>\n\n  <!-- ============ DE GRACA ============ -->\n  <div class=\"doc-section\">\n    <h2>6. O que voc\u00ea ganhou de gra\u00e7a<\/h2>\n\n    <table class=\"doc-table\">\n      <thead><tr><th>Recurso<\/th><th>Sem a engine, voc\u00ea teria que<\/th><\/tr><\/thead>\n      <tbody>\n        <tr><td>Inicializa\u00e7\u00e3o do motor<\/td><td>chamar <code>pygame.init()<\/code> e configurar o modo de v\u00eddeo<\/td><\/tr>\n        <tr><td>Fila de eventos<\/td><td>escrever o la\u00e7o <code>for event in pygame.event.get()<\/code><\/td><\/tr>\n        <tr><td>Bot\u00e3o de fechar<\/td><td>tratar <code>pygame.QUIT<\/code> e chamar <code>sys.exit()<\/code><\/td><\/tr>\n        <tr><td>Tela cheia (F11)<\/td><td>detectar a tecla e alternar o modo de v\u00eddeo<\/td><\/tr>\n        <tr><td>Delta time<\/td><td>criar um <code>Clock<\/code> e converter milissegundos para segundos<\/td><\/tr>\n        <tr><td>Buffer virtual<\/td><td>criar uma <code>Surface<\/code> e calcular a escala e as barras a cada frame<\/td><\/tr>\n        <tr><td>Cache de imagens<\/td><td>manter um dicion\u00e1rio e checar antes de cada <code>image.load<\/code><\/td><\/tr>\n      <\/tbody>\n    <\/table>\n  <\/div>\n\n  <div class=\"doc-section\">\n    <h2>Pr\u00f3ximo passo<\/h2>\n    <p>\n      Com a janela abrindo, v\u00e1 para os <a href=\"\/pplay\/tutoriais\/\">tutoriais<\/a> e construa um\n      jogo de plataforma completo \u2014 personagem com f\u00edsica de verdade, cen\u00e1rio desenhado em\n      arquivo de texto, c\u00e2mera, moedas, inimigo e telas de menu.\n    <\/p>\n  <\/div>\n\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Vers\u00e3o est\u00e1vel \u00b7 documenta\u00e7\u00e3o 2.1 Download e instala\u00e7\u00e3o Baixe a engine, instale o Pygame e coloque uma janela na tela. Do zero ao primeiro programa rodando s\u00e3o tr\u00eas passos e cinco linhas de c\u00f3digo. 1. Baixe a engine Power PPlay A vers\u00e3o mais recente da engine, direto do reposit\u00f3rio oficial. Cerca de 2&nbsp;MB, sem depend\u00eancias [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":3,"comment_status":"closed","ping_status":"closed","template":"download-template.php","meta":{"footnotes":""},"_links":{"self":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/40"}],"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\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/comments?post=40"}],"version-history":[{"count":9,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/40\/revisions"}],"predecessor-version":[{"id":1142,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/40\/revisions\/1142"}],"wp:attachment":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/media?parent=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}