Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vitor Carlet | Lucas Magalhães | melhorias e funcionalidades adicionais em comparação ao primeiro código. #3

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

vitorcarlet
Copy link

Níveis de Dificuldade:
    Adição de três botões (Fácil, Médio, Difícil) que permitem embaralhar o tabuleiro com diferentes níveis de dificuldade, cada um executando um número diferente de movimentos aleatórios para alterar o estado inicial do tabuleiro.

Botão de Resolução Automática:
    Um novo botão Resolver Automaticamente foi adicionado, permitindo que o jogo resolva o quebra-cabeça automaticamente. A solução é encontrada usando o algoritmo A* (A-star), que busca o caminho mais eficiente para atingir o estado final (resolvido).

Animação da Solução:
    Após encontrar a solução, o código anima os movimentos para resolver o quebra-cabeça. O usuário pode acompanhar os movimentos passo a passo enquanto são executados.

Informação Detalhada da Solução:
    Uma nova seção exibe a jogada atual e o total de jogadas necessárias para resolver o quebra-cabeça durante a execução automática.

Cálculo da Distância de Manhattan:
    Foi introduzida uma função calculateManhattanDistance, que calcula a soma das distâncias de cada peça em relação à sua posição no estado final. Esse cálculo é utilizado no algoritmo A* para determinar a "heurística" ou quão longe o estado atual está da solução.

Melhor Organização do Código:
    O código foi estruturado de forma mais clara e modular, com funções dedicadas para tarefas específicas como shuffleBoard (embaralhar o tabuleiro), solvePuzzleAStar (resolver usando A*), animateSolution (animar a solução), e outras para separar responsabilidades e facilitar futuras alterações.

Exibição de Informação Adicional:
    Agora o jogo exibe, além do estado atual do tabuleiro, informações como o número de inversões, a paridade, o número de jogadas realizadas e a jogada atual durante a solução automática.

Essas melhorias tornaram o jogo mais interativo, desafiador, e forneceram uma solução automatizada para o quebra-cabeça, além de permitir que o usuário escolha diferentes níveis de dificuldade.

    Níveis de Dificuldade:
        Adição de três botões (Fácil, Médio, Difícil) que permitem embaralhar o tabuleiro com diferentes níveis de dificuldade, cada um executando um número diferente de movimentos aleatórios para alterar o estado inicial do tabuleiro.

    Botão de Resolução Automática:
        Um novo botão Resolver Automaticamente foi adicionado, permitindo que o jogo resolva o quebra-cabeça automaticamente. A solução é encontrada usando o algoritmo A* (A-star), que busca o caminho mais eficiente para atingir o estado final (resolvido).

    Animação da Solução:
        Após encontrar a solução, o código anima os movimentos para resolver o quebra-cabeça. O usuário pode acompanhar os movimentos passo a passo enquanto são executados.

    Informação Detalhada da Solução:
        Uma nova seção exibe a jogada atual e o total de jogadas necessárias para resolver o quebra-cabeça durante a execução automática.

    Cálculo da Distância de Manhattan:
        Foi introduzida uma função calculateManhattanDistance, que calcula a soma das distâncias de cada peça em relação à sua posição no estado final. Esse cálculo é utilizado no algoritmo A* para determinar a "heurística" ou quão longe o estado atual está da solução.

    Melhor Organização do Código:
        O código foi estruturado de forma mais clara e modular, com funções dedicadas para tarefas específicas como shuffleBoard (embaralhar o tabuleiro), solvePuzzleAStar (resolver usando A*), animateSolution (animar a solução), e outras para separar responsabilidades e facilitar futuras alterações.

    Exibição de Informação Adicional:
        Agora o jogo exibe, além do estado atual do tabuleiro, informações como o número de inversões, a paridade, o número de jogadas realizadas e a jogada atual durante a solução automática.

Essas melhorias tornaram o jogo mais interativo, desafiador, e forneceram uma solução automatizada para o quebra-cabeça, além de permitir que o usuário escolha diferentes níveis de dificuldade.
@vitorcarlet vitorcarlet changed the title melhorias e funcionalidades adicionais em comparação ao primeiro código. Vitor Carlet | Lucas Magalhães | melhorias e funcionalidades adicionais em comparação ao primeiro código. Sep 15, 2024
… do jogo da velha.

- Adicionada a função `minimax` com otimização de poda alfa-beta para calcular a melhor jogada possível.
- Atualizada a função `aiMove` para utilizar o algoritmo Minimax, permitindo que o jogador "O" tome decisões ótimas.
- Ajustada a função `checkWinner` para garantir retornos booleanos consistentes.
- Incluído o parâmetro `depth` na avaliação do Minimax para priorizar vitórias mais rápidas ou derrotas mais demoradas.
- Melhorias gerais na experiência do usuário e eficiência do código.

Agora, a IA é mais inteligente e torna o jogo mais desafiador para o jogador humano.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant