{"id":980,"date":"2026-04-02T01:39:07","date_gmt":"2026-04-02T04:39:07","guid":{"rendered":"https:\/\/www2.ic.uff.br\/pplay\/?page_id=980"},"modified":"2026-04-02T01:39:07","modified_gmt":"2026-04-02T04:39:07","slug":"architect-2-0","status":"publish","type":"page","link":"http:\/\/www2.ic.uff.br\/pplay\/architect-2-0\/","title":{"rendered":"Architect"},"content":{"rendered":"\n<div class=\"doc-container\">\n    <div class=\"doc-header\">\n        <h1>PPlay Architect (Auto-Organizador)<\/h1>\n        <div class=\"doc-badge\">Utilit\u00e1rio: PPlay\/architect.py | Dificuldade: DevOps \/ CLI<\/div>\n        <p>Desenvolver um jogo inteiro dentro de um \u00fanico arquivo <code>main.py<\/code> \u00e9 o maior erro de iniciantes. O c\u00f3digo fica com milhares de linhas e imposs\u00edvel de manter. O <strong>PPlay Architect<\/strong> \u00e9 uma ferramenta de linha de comando (CLI) embutida na engine que <strong>refatora o seu projeto automaticamente<\/strong>, movendo classes para pastas organizadas e corrigindo os imports sozinho.<\/p>\n    <\/div>\n\n    <div class=\"doc-section\">\n        <h2>1. O Problema vs. A Solu\u00e7\u00e3o<\/h2>\n        <p>Mover uma classe como <code>Player<\/code> ou <code>Inimigo<\/code> do <code>main.py<\/code> para outro arquivo manualmente d\u00e1 medo. Se voc\u00ea errar o <em>import<\/em>, o jogo quebra. O Architect l\u00ea a <strong>\u00c1rvore de Sintaxe (AST)<\/strong> do Python, recorta a classe perfeitamente (preservando a indenta\u00e7\u00e3o) e reescreve os caminhos por voc\u00ea.<\/p>\n    <\/div>\n\n    <div class=\"doc-section\">\n        <h2>2. Como usar o Architect no Terminal<\/h2>\n        <p>Abra o terminal (no VS Code, por exemplo) na raiz do seu projeto, onde est\u00e1 o seu <code>main.py<\/code>. A sintaxe do comando \u00e9:<\/p>\n        \n        <pre class=\"doc-code\"><code>python PPlay\/architect.py [arquivo_origem] [NomeDaClasse][pasta_destino]<\/code><\/pre>\n        \n        <p><strong>Exemplo Pr\u00e1tico:<\/strong> Imagine que voc\u00ea tem a classe <code>Boss<\/code> no seu <code>main.py<\/code> e quer mov\u00ea-la para uma nova pasta chamada <code>entidades<\/code>.<\/p>\n        \n        <pre class=\"doc-code\"><code>python PPlay\/architect.py main.py Boss entidades<\/code><\/pre>\n    <\/div>\n\n    <div class=\"doc-section\">\n        <h2>3. O que acontece &#8220;Debaixo do Cap\u00f4&#8221;?<\/h2>\n        <p>No exato milissegundo em que voc\u00ea aperta ENTER, a engine faz a seguinte m\u00e1gica:<\/p>\n        <table class=\"doc-table\">\n            <tr>\n                <th>A\u00e7\u00e3o<\/th>\n                <th>Descri\u00e7\u00e3o do Processo<\/th>\n            <\/tr>\n            <tr>\n                <td><strong>1. Escrita At\u00f4mica (Backup)<\/strong><\/td>\n                <td>A engine cria um arquivo <code>main.py.bak<\/code> oculto. Se o seu PC desligar no meio do processo, voc\u00ea n\u00e3o perde 1 linha de c\u00f3digo.<\/td>\n            <\/tr>\n            <tr>\n                <td><strong>2. Cria\u00e7\u00e3o de Pacote<\/strong><\/td>\n                <td>Se a pasta <code>entidades\/<\/code> n\u00e3o existir, ela \u00e9 criada junto com um arquivo <code>__init__.py<\/code>, transformando-a num pacote Python v\u00e1lido.<\/td>\n            <\/tr>\n            <tr>\n                <td><strong>3. Inje\u00e7\u00e3o de Depend\u00eancias<\/strong><\/td>\n                <td>O novo arquivo <code>entidades\/boss.py<\/code> nasce j\u00e1 com os imports da Power PPlay 2.0 (Sprite, Window) no topo.<\/td>\n            <\/tr>\n            <tr>\n                <td><strong>4. Auto-Importa\u00e7\u00e3o<\/strong><\/td>\n                <td>A ferramenta escreve <code>from entidades.boss import Boss<\/code> automaticamente na primeira linha do seu <code>main.py<\/code>.<\/td>\n            <\/tr>\n        <\/table>\n    <\/div>\n\n    <div class=\"doc-tip\">\n        <div class=\"doc-tip-title\">\ud83d\udca1 Dica do S\u00eanior: Modularize R\u00e1pido<\/div>\n        <p>A melhor forma de desenvolver na PPlay 2.0 \u00e9: Crie a sua classe r\u00e1pida no <code>main.py<\/code> para testar a ideia. Funcionou? O pulo ficou bom? V\u00e1 no terminal, rode o <strong>Architect<\/strong> e jogue ela para a pasta <code>scripts<\/code>. Sua \u00e1rea de trabalho fica limpa e seu jogo continua rodando perfeitamente sem voc\u00ea encostar em nenhum import!<\/p>\n    <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>PPlay Architect (Auto-Organizador) Utilit\u00e1rio: PPlay\/architect.py | Dificuldade: DevOps \/ CLI Desenvolver um jogo inteiro dentro de um \u00fanico arquivo main.py \u00e9 o maior erro de iniciantes. O c\u00f3digo fica com milhares de linhas e imposs\u00edvel de manter. O PPlay Architect \u00e9 uma ferramenta de linha de comando (CLI) embutida na engine que refatora o seu [&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\/980"}],"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=980"}],"version-history":[{"count":1,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/980\/revisions"}],"predecessor-version":[{"id":982,"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/pages\/980\/revisions\/982"}],"wp:attachment":[{"href":"http:\/\/www2.ic.uff.br\/pplay\/wp-json\/wp\/v2\/media?parent=980"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}