Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aprendizado Flappy Bird

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.

Requisitos e instalação

  • Python 3.10 ou mais recente
  • Pygame
  • NumPy
python -m venv .venv
# Windows
.venv\Scripts\activate
pip install -r requirements.txt

Como executar

python main.py

Controles:

  • ESPAÇO: faz o pássaro pular;
  • R: reinicia após o fim da partida;
  • fechar a janela: encerra o jogo.

Treinamento por Q-Learning

Execute o treinamento visual com:

python training.py

O 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.

Organização

  • 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages