Este projeto implementa um jogador automático para o jogo de forca, utilizando conceitos de teoria da informação e análise de frequência para otimizar suas tentativas de adivinhação. O jogador possui 5 vidas e tenta maximizar suas chances de vitória reduzindo o vocabulário de palavras possíveis a cada tentativa com base na informação obtida.
A estratégia do jogador se baseia principalmente em análise de frequência e filtragem incremental do vocabulário para escolher a letra que mais provavelmente faz parte da palavra secreta.
-
Inicialização e Cálculo de Frequências de Letras:
- A primeira etapa é a inicialização do vocabulário. Ao iniciar uma nova partida, o vocabulário é carregado e filtrado para conter apenas palavras que têm o mesmo comprimento da palavra secreta. A classe
Jogadorentão analisa a frequência de cada letra nas palavras candidatas, usando um contador para armazenar a frequência de cada letra disponível. Essa análise de frequência é armazenada no dicionárioself.probs, que o jogador usa para determinar as letras mais comuns nas palavras possíveis.
- A primeira etapa é a inicialização do vocabulário. Ao iniciar uma nova partida, o vocabulário é carregado e filtrado para conter apenas palavras que têm o mesmo comprimento da palavra secreta. A classe
-
Filtragem Incremental do Vocabulário:
- Após cada tentativa de letra, o método
filter_palavrasé chamado para ajustar o vocabulário. Quando o jogador tenta uma letra, ele recebe de volta uma lista de posições onde essa letra aparece (ou uma lista vazia se não houver ocorrências). Com essas informações, o vocabulário é reduzido para incluir apenas palavras que possuem a letra nas mesmas posições reveladas. Se a letra não estiver presente, todas as palavras que contêm essa letra são removidas do vocabulário. - Esse processo de filtragem incremental ajuda o jogador a eliminar palavras irrelevantes com base nas letras já testadas, focando o vocabulário cada vez mais na palavra secreta. Em seguida, o método
compute_probsé chamado novamente para recalcular a frequência de letras com base no vocabulário atualizado.
- Após cada tentativa de letra, o método
-
Escolha de Letras com Maior Frequência:
- O jogador utiliza o método
guess_letterpara selecionar a próxima letra com base nas frequências calculadas. Ele escolhe a letra que aparece com maior frequência nas palavras restantes, o que maximiza a chance de encontrar uma letra presente na palavra secreta, evitando tentativas erradas e conservando vidas.
- O jogador utiliza o método
Os conceitos de análise de frequência e filtragem incremental são aplicados diretamente para otimizar a eficácia do jogador, aumentando as chances de acertar a palavra secreta com o mínimo de tentativas erradas. Essa abordagem demonstra como métodos de teoria da informação podem ser aplicados em estratégias de jogos clássicos para melhorar decisões com base em dados e otimização. """