Projeto acadêmico da disciplina de Introdução à Inteligência Artificial. O projeto contém uma versão jogável de Flappy Bird e um agente de Q-Learning tabular que aprende por tentativa e erro.
- Python 3.10 ou mais recente
- Pygame
- NumPy
python -m venv .venv
# Windows
.venv\Scripts\activate
pip install -r requirements.txtpython main.pyControles:
ESPAÇO: faz o pássaro pular;R: reinicia após o fim da partida;- fechar a janela: encerra o jogo.
Execute o treinamento visual com:
python training.pyO agente pode escolher entre não pular (0) e pular (1). O estado considera a distância vertical entre o pássaro e o centro da abertura, a velocidade vertical do pássaro e a distância horizontal até o próximo cano. Esses valores são agrupados em intervalos para servirem como chaves de uma Q-table.
Durante o treinamento, a política epsilon-greedy alterna entre explorar ações aleatórias e usar a ação com maior valor conhecido. O epsilon diminui gradualmente ao final de cada episódio.
O aprendizado é salvo em q_table.pkl. Se esse arquivo já existir, o próximo treinamento carrega a tabela e o epsilon anteriores automaticamente.
main.py: inicia o Pygame e controla a entrada do jogador;game.py: coordena a partida, a pontuação e as colisões;bird.py: movimentação e desenho do pássaro;pipe.py: movimentação, desenho e colisão dos canos;settings.py: constantes e caminhos dos recursos;agent.py: discretização, política epsilon-greedy e Q-Learning;training.py: execução visual dos episódios de treinamento;assets/: local reservado para os sprites.
Os sprites oficiais estão na pasta assets. As margens transparentes do pássaro e do cano são removidas em memória durante o carregamento, e a faixa útil do chão é definida em settings.py. Se algum desses arquivos não estiver disponível, o jogo continua funcionando com formas e cores do próprio Pygame.