Git Product home page Git Product logo

labirinto-ratos's Introduction

🌟 Labirinto com Threads Simulator

Bem-vindo ao Labirinto com Threads Simulator! Este projeto é um simulador interativo onde ratos 🐭 tentam encontrar um pedaço de queijo 🧀 em um labirinto complexo. Aprenda sobre algoritmos de busca uso de Threads e veja-os em ação neste divertido e educativo simulador.

📋 Tabela de Conteúdos

🎯 Objetivo:

implementar um labirinto e sua solução utilizando threads.

🚀 Funcionalidades

Geração Automática de Labirintos: Cada sessão começa com um novo labirinto, gerado aleatoriamente. Simulação de Busca: Ratos virtuais, cada rato é uma thread e os ratos usam o algoritmo de busca em largura (BFS) para encontrar o caminho até o queijo. Interface Gráfica: Visualize todo o processo em uma interface gráfica amigável, além de acompanha a execução das threads no console da aplicação.

📋 Pré-requisitos

Antes de iniciar, certifique-se de ter instalado:

  • Java JDK 11 ou superior
  • IDE com suporte para Java (recomendado: IntelliJ IDEA ou Eclipse)

🛠️ Instalação

Clone o repositório para sua máquina local usando:

Copy code
git clone https://github.com/wemersonnino/labirinto-ratos.git

⚙️ Como Usar

Para iniciar o simulador, navegue até o diretório do projeto e execute:

Copy code
javac -d bin src/*.java
Copy code
Main-Class: labirinto-ratos.package.MainClass
Copy code
Mjar cvfm labirinto-ratos.jar manifest.txt -C bin .
Copy code
java -jar labirinto-ratos.jar
  • A aplicação irá gerar um novo labirinto e iniciar a simulação. Cada rato irá tentar encontrar o queijo, e você poderá acompanhar o progresso no console.
  • Para encerrar a simulação, pressione a tecla "Enter" no console.
  • Para iniciar uma nova simulação, execute o comando java -jar labirinto-ratos.jar novamente.
  • Divirta-se explorando o labirinto e aprendendo sobre algoritmos de busca e uso de Threads!
  • Para visualizar o código-fonte, abra o projeto em sua IDE favorita e explore os arquivos na pasta src.
  • Para modificar o código-fonte, faça as alterações desejadas e recompile o projeto usando o comando javac -d bin src/*.java.
  • Para executar o projeto com as alterações, gere um novo arquivo JAR e execute-o conforme as instruções acima.

🧠 Algoritmos Utilizados

  • Busca em Largura (BFS): Garante que encontraremos o caminho mais curto para o queijo, se houver um caminho disponível.
  • Geração de Labirintos: Utiliza uma adaptação do algoritmo de Prim para criar labirintos complexos e solucionáveis.

📊 Melhorias Futuras

  • Implementação de outros algoritmos de busca como A* ou Dijkstra.
  • Adição de níveis de dificuldade com labirintos maiores ou múltiplos ratos.
  • Recursos de pausa e reinício durante a simulação.
  • Implementação do Deep Q Learning (DQL): A aplicação de DQL pode trazer melhorias significativas no comportamento dos ratos virtuais ao permitir que aprendam a maximizar uma recompensa cumulativa através do tempo.
  • Veja como isso pode beneficiar o projeto:
    1. Aprendizado por Reforço: O DQL permite que os agentes aprendam de forma mais eficiente a encontrar o queijo, evitando caminhos subótimos.
    2. Adaptação a Ambientes Complexos: O algoritmo é robusto o suficiente para lidar com ambientes dinâmicos e complexos, onde decisões são tomadas com base em percepções limitadas.
    3. Decisões Baseadas em Estado: O rato poderia aprender a tomar decisões considerando o estado completo do ambiente, o que inclui a localização do queijo e a configuração de obstáculos e penalidades.

🤝 Contribuições

Contribuições são sempre bem-vindas! Para contribuir:

Fork o projeto

  • Crie sua Feature Branch (git checkout -b feature/AmazingFeature)
  • Faça commit de suas mudanças (git commit -m 'Add some AmazingFeature')
  • Faça push para a Branch (git push origin feature/AmazingFeature)
  • Abra um Pull Request

📝 Licença

Distribuído sob a licença MIT. Veja LICENSE para mais informações.

📞 Contato

Wemerson Nino – @wemersonnino

labirinto-ratos's People

Contributors

wemersonnino avatar

Stargazers

YaYa Mônico avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.