# PYc-Man — Pac-Man (Esquenta Hackathon Python Floripa / IFSC)
> Comentário (cole no início do `pacman.py` se quiser):
> `# Esquenta para Hackathon Python Floripa / IFSC — vamos testar lógica, requisitos e clima retrô. Todo mundo conhece Pac-Man — sabia que dá pra fazer com Python? Dá pra fazer também em outras linguagens (JavaScript, Java, C#, etc). Esse projeto é um exercício prático para juniors.`
---
## Sumário
- [O que é este projeto](#o-que-é-este-projeto)
- [Para quem é](#para-quem-é)
- [Pré-requisitos](#pré-requisitos)
- [Instalação e execução (passo a passo)](#instalação-e-execução-passo-a-passo)
- [Como o código está organizado](#como-o-código-está-organizado)
- [Tecnologias e por que foram usadas](#tecnologias-e-por-que-foram-usadas)
- [Como o jogo funciona (visão de alto nível)](#como-o-jogo-funciona-visão-de-alto-nível)
- [Principais trechos de código e o que fazem](#principais-trechos-de-código-e-o-que-fazem)
- [Dicas para debugar problemas comuns](#dicas-para-debugar-problemas-comuns)
- [Sugestões de melhorias (ótimas para o hackathon)](#sugestões-de-melhorias-ótimas-para-o-hackathon)
- [Como contribuir / entregar no hackathon](#como-contribuir--entregar-no-hackathon)
- [Licença e créditos](#licença-e-créditos)
---
## O que é este projeto
**PYc-Man** é uma implementação simples e retrô de Pac-Man feita em Python usando **Pygame**.
O objetivo principal é **praticar pensamento computacional, lógica de jogo, estruturas de dados simples (matrizes/mapas), e integração com bibliotecas externas** — tudo em preparação para o Hackathon Python Floripa / IFSC.
---
## Para quem é
- Pessoas iniciando em Python (juniors) que querem um projeto prático.
- Times procurando um *esquenta* rápido antes do hackathon.
- Quem quer entender como transformar regras de negócio (movimento, colisão, IA simples) em código.
---
## Pré-requisitos
- Windows / macOS / Linux com Python 3.8+ instalado.
- Acesso ao terminal (PowerShell, Terminal ou similar).
- Recomendo um editor de código (VS Code, PyCharm, etc).
### Pacotes Python necessários
- `pygame`
Instale com:
```bash
python -m pip install pygameSe der erro no
pip, experimentepython -m ensurepip --upgradeou verifique opython --versionpara garantir que está usando a versão correta do Python.
- Clone o repositório (ou faça download do ZIP):
git clone https://github.com/labarboza14/pyc-man.git
cd pyc-man- Crie um ambiente virtual (opcional, mas recomendado)
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate- Instale dependências
python -m pip install --upgrade pip
python -m pip install pygame- Rode o jogo
python pacman.py- Na tela inicial, pressione ENTER.
- Segure as setas para mover (Opção B — movimento contínuo).
- Objetivo: comer todas as bolinhas (pellets).
- Ao vencer, aparece a tela "VOCÊ VENCEU!".
- Ao perder todas as vidas, aparece a tela "GAME OVER".
pacman.py— arquivo principal contendo tudo: mapa, lógica, sprites simples, loop do jogo.README.md— este documento.ranking.txt— gerado pelo jogo (se a versão incluir ranking).- (opcional)
assets/— ícones, sons (se você adicionar).
Mantivemos o projeto num único arquivo
.pypara facilitar o entendimento e o deploy rápido. Em projetos maiores vale separar em módulos.
- Python 3 — linguagem popular, ótima para ensino e prototipagem rápida.
- Pygame — biblioteca madura para 2D em Python; permite abrir janelas, desenhar formas, capturar teclado, tocar som.
- Git / GitHub — versionamento e hospedagem do código; excelente para colaboração no hackathon e pra entregar projeto.
Por que essas escolhas:
- Ferramentas simples para aprender conceitos de jogos (movimento, colisão, IA básica) sem overhead de frameworks complexos.
- Fácil de rodar em laptops comuns dos participantes.
- Mapa: uma matriz (lista de listas) onde
1 = paredee0 = caminho. Cada célula é um tile quadrado (TILE px). - Pellets: set de coordenadas que representam bolinhas para comer.
- Pac-Man: sprite circular que se move enquanto a tecla é pressionada; colisões são checadas pelos cantos do círculo.
- Fantasma: IA simples (BFS) que recalcula rota a cada 1s e segue poucos passos (modo F4, propositalmente “menos esperto”).
- HUD: exibe pontos, vidas e tempo.
- Condições: ganha ao comer todos os pellets; perde quando acaba as vidas.
-
Mapa (matrix) — define onde Pac-Man pode andar. Entender isso é essencial: é só uma grade.
-
Função
point_is_wall(px, py)— converte pixel → tile e responde se há parede. Usada em todas checagens de colisão. -
Classe
Pacmanmove(dx, dy): tenta mover em pixels, checando colisões nos quatro cantos do círculo.tile(): retorna a tile atual (útil para comer pellets).
-
Classe
RedGhostbfs(start, goal): busca em largura para achar um caminho simples entre tiles (BFS é fácil, determinístico e suficiente).update(pac_pos): recalcula a cada 1s e segue passos curtos (isso evita perseguição perfeita).
-
Loop principal
- Lê o teclado (
pygame.key.get_pressed()), move Pac-Man, atualiza ghost, checa colisões, desenha tudo.
- Lê o teclado (
- Janela fecha imediatamente: sign of script finishing. Verifique se falta o loop principal ou se há
sys.exit()antes. Rode pelo terminal e leia mensagens de erro. - Pygame não instalado: instale com
python -m pip install pygame. Confirapython --version. - Pac-Man preso em corredores: ajuste
radiuse a lógica de colisão (já tratada na versão atual). - Erro
no module named pygame: seupippode estar instalando em outro Python. Usepython -m pip install pygamepara garantir.
Sinta-se livre para usar e modificar o código para aprender e compartilhar. Recomendo adicionar uma licença permissiva ao repositório, por exemplo MIT License.