Jogo da Velha com Minimax e Poda Alfa-Beta #29
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Prezado(a) Professor(a),
Gostaria de submeter o trabalho completo referente ao desenvolvimento do Jogo da Velha com Minimax e Poda Alfa-Beta, conforme solicitado. O projeto inclui as funcionalidades requeridas e incorpora melhorias para aprimorar a experiência do usuário.
Descrição do Trabalho:
Implementação do Algoritmo Minimax com Poda Alfa-Beta:
O jogo utiliza o algoritmo Minimax otimizado com poda alfa-beta para a inteligência artificial do computador, permitindo que ele faça jogadas estratégicas de forma eficiente.
A poda alfa-beta reduz o número de nós avaliados pelo algoritmo Minimax, melhorando o desempenho e a velocidade de resposta do jogo.
Árvore de Decisão:
Foi implementada uma árvore de decisão que exibe as próximas possibilidades de jogadas a partir do estado atual do jogo.
As jogadas já realizadas são destacadas na árvore, facilitando o acompanhamento das decisões da IA.
Modos de Jogo:
Jogar com o Computador: O usuário pode jogar contra a inteligência artificial.
Jogar com outro Jogador: Permite que dois jogadores humanos joguem entre si no mesmo dispositivo.
Interface Responsiva e Melhorias de UX/UI:
O design foi aprimorado com um CSS responsivo, adaptando-se a diferentes tamanhos de tela.
Foram implementados destaques visuais para células vencedoras e feedback ao interagir com o tabuleiro.
Os botões foram organizados e estilizados para melhor usabilidade.
Organização do Código:
O código foi separado em arquivos distintos (index.html, styles.css e script.js) para melhor organização e manutenção.
Comentários e estruturação do código facilitam a compreensão e possíveis futuras modificações.
Principais Desafios e Soluções:
Integração do Minimax com Poda Alfa-Beta:
Implementar a poda alfa-beta no algoritmo Minimax foi um desafio para otimizar a eficiência do algoritmo.
A poda permite que o algoritmo ignore ramificações que não podem afetar a decisão final, reduzindo o tempo de processamento.
Integração entre JavaScript e CSS:
Houve a necessidade de ajustar o JavaScript para utilizar o atributo data-value nas células, conforme o novo CSS exigia para exibir os valores "X" e "O".
A função updateBoard foi modificada para definir o data-value corretamente, garantindo a exibição adequada dos símbolos no tabuleiro e nas miniaturas da árvore de decisão.
Funcionamento da Árvore de Decisão:
Ajustes foram feitos na função generateNextMoves para que a árvore de decisão refletisse corretamente as próximas jogadas possíveis, destacando também as jogadas já realizadas.
Adicionamos estilos específicos no CSS para as mini-células, garantindo consistência visual.
Como Testar o Jogo:
Abra o arquivo index.html em um navegador web compatível.
Escolha o modo de jogo desejado:
Clique em "Jogar com o Computador" para enfrentar a IA.
Clique em "Jogar com outro Jogador" para um jogo entre dois jogadores humanos.
Faça suas jogadas clicando nas células vazias do tabuleiro.
Observe a árvore de decisão à direita, que exibirá as próximas possibilidades de jogadas.
O jogo indicará quando houver um vencedor ou em caso de empate.
Utilize o botão "Reiniciar" para começar uma nova partida a qualquer momento.
Considerações Finais:
Experiência do Usuário:
Esforços foram feitos para melhorar a experiência do usuário, tanto em termos de jogabilidade quanto de interface.
A responsividade do design permite que o jogo seja acessado confortavelmente em diferentes dispositivos.
Feedback e Melhorias Futuras:
Estou aberto(a) a sugestões e feedback para aprimorar ainda mais o projeto.
Possíveis melhorias futuras incluem adicionar níveis de dificuldade e aprimorar a visualização da árvore de decisão.
Anexos:
index.html
styles.css
script.js
README.md (com instruções detalhadas e informações adicionais)
Agradeço pela oportunidade de desenvolver este trabalho e aguardo seu retorno para quaisquer esclarecimentos adicionais.
Atenciosamente,
Thales Ferreira