Um jogo interativo de terminal construído em Python que adivinha a linguagem de programação ou tecnologia que você está pensando! Este projeto foi desenvolvido para aplicar os conceitos fundamentais de Sistemas Especialistas e manipulação de dados persistentes.
Este script simula um Sistema Especialista clássico. Ele faz perguntas investigativas de "sim" ou "não" para afunilar as possibilidades até chegar a um palpite final. O grande diferencial é o seu aprendizado dinâmico: se o programa não souber a linguagem em que você pensou, ele pede que você o ensine, salvando esse novo conhecimento de forma permanente!
É um programa de Inteligência Artificial projetado para simular a capacidade de tomada de decisão de um especialista humano. Ele é composto por:
- Base de Conhecimento: Onde ficam os dados e regras (neste caso, a nossa árvore de decisão em formato JSON).
- Motor de Inferência: A lógica que navega pelas regras com base nas respostas do usuário (o nosso laço
while).
Sistemas assim são usados na vida real para diagnósticos médicos, aprovação de crédito bancário e suporte técnico automatizado.
- Adivinhação Inteligente: Começa com uma base de dados robusta contendo 17 tecnologias (Python, Java, C++, SQL, Assembly, etc.).
- Aprendizado de Máquina (Machine Learning básico): Se o sistema errar, ele aprende a nova tecnologia e a pergunta diferencial para não errar na próxima vez.
- Persistência de Dados: Todo o conhecimento aprendido é salvo automaticamente em um arquivo
memoriaAkinator.json. Ao fechar e abrir o jogo, ele continuará inteligente. - Sistema de Reset: Um menu inicial que permite apagar a memória e voltar a árvore de conhecimento para o "estado de fábrica".
- Tratamento de Erros: O sistema lida graciosamente com entradas inválidas (textos com espaços, letras maiúsculas ou palavras não reconhecidas), evitando que o programa quebre.
Pré-requisitos: Você só precisa ter o Python instalado na sua máquina. Não é necessário instalar bibliotecas externas, pois o projeto usa apenas módulos nativos (json e os).
- Clone este repositório:
git clone https://github.com/Lucas-Balduino/ProgrammingLanguageAkinator.git
- Navegue até a pasta do projeto:
cd ProgrammingLanguageAkinator - Execute o script principal:
python SistemaEspecialista.py
O projeto foi modularizado nas seguintes funções principais:
carregarArvore(): Tenta ler o arquivo JSON. Se for a primeira execução e o arquivo não existir, ele carrega a árvore de decisão inicial mapeada no código.salvarArvore(arvore): Recebe o dicionário atualizado com o novo aprendizado e o converte/salva em um arquivo.jsonestruturado.akinatorLinguagens(): É o coração do jogo. Contém o motor de inferência (navegação pela árvore) e a rotina de aprendizado que pede a nova linguagem e a nova pergunta ao usuário em caso de erro.resetarMemoria(): Utiliza a bibliotecaospara deletar fisicamente o arquivo JSON, resetando o progresso do jogador.menuPrincipal(): Interface de terminal que mantém o jogo rodando em um laço infinito até o usuário decidir sair.
Durante o desenvolvimento, garantimos a robustez do sistema com os seguintes cenários:
- Entradas Inválidas: Digitar
SIM,talvezouSimsão tratados com.lower().strip(). Respostas fora do padrão disparam um aviso amigável sem interromper o jogo. - Caminho Feliz: Navegar pela árvore respondendo corretamente leva ao palpite exato da linguagem pré-cadastrada, sem alterações na memória.
- Expansão Correta: Ao ensinar uma nova linguagem (ex: Ruby), o sistema altera o galho correto da árvore na RAM e espelha essa mudança perfeitamente no JSON.