{"id":30441597,"url":"https://github.com/williamsoares21/game-project","last_synced_at":"2026-02-09T09:34:52.826Z","repository":{"id":302954411,"uuid":"1014042747","full_name":"WilliamSoares21/game-project","owner":"WilliamSoares21","description":"Um mini Roguelike em Python, desenvolvido com Pygame Zero. Apresenta um menu interativo, animações de sprite fluidas para jogador e inimigos, e um objetivo de chave/porta. Demonstra habilidades em POO e gerenciamento de assets.","archived":false,"fork":false,"pushed_at":"2025-07-07T01:47:37.000Z","size":39885,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-23T07:09:18.435Z","etag":null,"topics":["pgzero","pygame-library","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WilliamSoares21.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-04T23:58:04.000Z","updated_at":"2025-07-07T01:51:06.000Z","dependencies_parsed_at":"2025-07-05T01:19:47.377Z","dependency_job_id":"c3d24cc9-563f-4616-b905-ce4f23b3839b","html_url":"https://github.com/WilliamSoares21/game-project","commit_stats":null,"previous_names":["williamsoares21/game-project"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/WilliamSoares21/game-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WilliamSoares21%2Fgame-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WilliamSoares21%2Fgame-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WilliamSoares21%2Fgame-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WilliamSoares21%2Fgame-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WilliamSoares21","download_url":"https://codeload.github.com/WilliamSoares21/game-project/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WilliamSoares21%2Fgame-project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29260782,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T04:11:57.159Z","status":"ssl_error","status_checked_at":"2026-02-09T04:11:56.117Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["pgzero","pygame-library","python"],"created_at":"2025-08-23T07:09:12.393Z","updated_at":"2026-02-09T09:34:52.821Z","avatar_url":"https://github.com/WilliamSoares21.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simple Roguelike Adventure\n\nUm jogo Roguelike clássico desenvolvido em Python usando Pygame Zero, com foco em mecânicas de movimentação em grade, coleta de itens e sobrevivência.\n\n## Descrição\n\n**Simple Roguelike Adventure** é um jogo com visão de cima e movimento baseado em grade que demonstra as principais mecânicas do gênero Roguelike. O jogador deve navegar por um ambiente hostil, evitar inimigos e completar o objetivo principal: encontrar uma chave e usá-la para abrir uma porta misteriosa.\n\nEste projeto foi desenvolvido para demonstrar habilidades em:\n- Programação Python\n- Programação Orientada a Objetos (POO)\n- Desenvolvimento de jogos com Pygame Zero\n- Gerenciamento de estados e mecânicas de jogo\n- Implementação de sistemas de áudio e animação\n\n## Funcionalidades Implementadas\n\n### Menu Principal\n- **Interface Intuitiva:** Botões clicáveis com feedback visual\n- **Controles:** \"Start Game\", \"Music On/Off\", \"Exit\"\n- **Som de Feedback:** Efeitos sonoros para interação com botões\n\n### Sistema de Áudio Completo\n- **Música de Fundo:** Reprodução contínua e loop infinito (`rpg_through_the_white_gates.wav`)\n- **Efeitos Sonoros:**\n  - Clique de botão: `button_click.wav`\n  - Porta abrindo: `door-open-close.ogg`\n  - Porta trancada: `door-close.ogg`\n- **Controle de Volume:** Sistema de liga/desliga integrado\n\n### Personagens Animados\n- **Herói (Jogador):** Sprites personalizados da série `persona_*`\n- **Múltiplos Inimigos:** IA autônoma com sprites `enemy_*`\n- **Animações Fluidas:**\n  - Estados: idle, walk_up, walk_down, walk_left, walk_right\n  - Frames de transição (`_trans.png`) para movimento suave\n  - Sincronização perfeita entre animação e movimento\n\n### Mecânicas Roguelike\n- **Movimento em Grade:** Sistema de tiles 64x64 pixels\n- **Movimento Suave:** Transições animadas entre células\n- **Colisão Inteligente:** Detecção entre jogador e inimigos\n- **Spawn Estratégico:** Posicionamento automático de elementos com distâncias mínimas\n\n### Sistema de Objetivos\n- **Chave Coletável:** Item `key.png` posicionado aleatoriamente\n- **Porta Interativa:** Transição visual de `door-closed.png` para `door-open.png`\n- **HUD Informativo:** Indicador visual do status da chave\n- **Tela de Vitória:** Feedback completo ao completar o objetivo\n\n### Gerenciamento de Estados\n- **MENU:** Tela inicial com opções\n- **PLAYING:** Gameplay principal\n- **GAME_OVER:** Tela de derrota com opções de reinício\n- **VICTORY_SCREEN:** Tela de vitória com comemorações\n\n## Tecnologias Utilizadas\n\n- **Python 3.x** - Linguagem principal\n- **Pygame Zero (PgZero)** - Framework de desenvolvimento de jogos\n- **Módulos Padrão:** `math`, `random`\n- **pygame.Rect** - Manipulação de colisões e UI\n- **pygame.mixer** - Gerenciamento avançado de áudio\n\n## Justificativa Técnica - pygame.mixer\n\nDurante o desenvolvimento, foi identificada uma **inconsistência na API de música do Pygame Zero em ambientes Linux**. Conforme documentado na [documentação oficial](https://pygame-zero.readthedocs.io/en/stable/builtins.html#music):\n\n\u003e *\"The underlying Pygame music API is not terribly robust. Some of the bugs described here are in Pygame itself, not Pygame Zero.\"*\n\nA decisão de utilizar `pygame.mixer` diretamente foi tomada para:\n- ✅ **Garantir funcionalidade crítica de áudio** em todos os ambientes\n- ✅ **Demonstrar capacidade de debugging** e resolução de problemas técnicos\n- ✅ **Aplicar pesquisa em documentação oficial** para soluções robustas\n- ✅ **Priorizar requisitos funcionais** sobre restrições técnicas menores\n\n## Como Rodar o Projeto\n\n### Pré-requisitos\n- **Python 3.x** instalado\n- **pip** para gerenciamento de pacotes\n- **Git** para clonagem do repositório\n\n### Passos de Instalação\n\n1. **Clone o repositório:**\n```bash\ngit clone https://github.com/WilliamSoares21/game-project.git\ncd game-project\n```\n\n2. **Crie e ative o ambiente virtual:**\n```bash\npython3 -m venv .venv\nsource .venv/bin/activate  # Linux/Mac\n# ou\n.venv\\Scripts\\activate     # Windows\n```\n\n3. **Instale as dependências:**\n```bash\npip install pgzero\n```\n\n4. **Execute o jogo:**\n```bash\npgzrun game.py\n```\n\n### Controles do Jogo\n- **Setas do Teclado:** Movimentação do personagem\n- **Mouse:** Interação com botões do menu\n- **R:** Reiniciar jogo (telas de Game Over/Vitória)\n- **Esc:** Voltar ao menu principal\n\n## Estrutura do Projeto\n\n```\ngame-project/\n├── game.py                          # Código principal do jogo\n├── README.md                        # Documentação do projeto\n├── LICENSE                          # Licença do projeto\n├── .gitignore                       # Arquivos ignorados pelo Git\n├── images/                          # Assets visuais\n│   ├── persona_frente_0.png         # Sprite inicial do jogador\n│   ├── persona_walk_front_*.png     # Animações frente\n│   ├── persona_walk_left_*.png      # Animações esquerda\n│   ├── persona_walk_rigth_*.png     # Animações direita\n│   ├── persona_walk_up_*.png        # Animações para cima\n│   ├── enemy_front0.png             # Sprite inicial do inimigo\n│   ├── enemy_walk_*.png             # Animações do inimigo\n│   ├── key.png                      # Sprite da chave\n│   ├── door-closed.png              # Sprite da porta fechada\n│   └── door-open.png                # Sprite da porta aberta\n├── sounds/                          # Efeitos sonoros\n│   ├── button_click.wav             # Som de clique do menu\n│   ├── door-open-close.ogg          # Som de porta abrindo\n│   └── door-close.ogg               # Som de porta trancada\n├── music/                           # Música de fundo\n│   ├── rpg_through_the_white_gates.wav    # Música principal\n│   └── rpg_through_the_white_gates_original.ogg  # Versão original\n└── .venv/                           # Ambiente virtual Python\n```\n\n## Créditos dos Assets\n\n### Áudio\n- **Música de Fundo:** [RPG Through The White Gates](https://opengameart.org/content/rpgthroughthewhitegates) - OpenGameArt.org\n- **Som de Clique do Menu:** [Menu Selection Click](https://opengameart.org/content/menu-selection-click) - OpenGameArt.org\n- **Som de Porta Fechando:** [Door Close](https://pixabay.com/sound-effects/door-close-79921/) - Pixabay\n- **Som de Porta Abrindo:** [Door Open and Close](https://pixabay.com/sound-effects/door-open-close-45475/) - Pixabay\n\n### Sprites e Visuais\n- **Animações de Caminhada:** [Walking Animation Tutorial](https://community.aseprite.org/t/still-learning-or-trying-to-learn-to-do-walking-animation) - Aseprite Community\n- **Ícones de Chave:** [Key Icons](https://opengameart.org/content/key-icons) - OpenGameArt.org\n- **Sprites de Porta:** [Animated Bamboo Door Sprite](https://opengameart.org/content/animated-bamboo-door-sprite) - OpenGameArt.org\n\n### Desenvolvimento\n- **Programação e Design:** William Soares\n- **Framework:** Pygame Zero Community  \n- **Integração, Adaptação e Manipulação de Imagens:** Customizações próprias dos assets originais, com edição e ajustes realizados utilizando o GIMP\n\n## Contato\n\n**William Soares**\n- GitHub: [WilliamSoares21](https://github.com/WilliamSoares21)\n- Projeto: [Simple Roguelike Adventure](https://github.com/WilliamSoares21/game-project)\n\n---\n\n*Desenvolvido como estudo em Python usando Pygame Zero*\n\n## Licença\n\nEste projeto utiliza assets de terceiros sob suas respectivas licenças. Consulte os links dos créditos para mais informações sobre os termos de uso de cada asset.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilliamsoares21%2Fgame-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwilliamsoares21%2Fgame-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilliamsoares21%2Fgame-project/lists"}