Lógica e Inteligência Artificial (LIA) | Universidade do Minho
Implementação completa do jogo televisivo "Quem Quer Ser Milionário" utilizando Lógica Declarativa (SWI-Prolog). O projeto destaca-se pela integração híbrida de sistemas, utilizando Python para Inteligência Artificial (LLM) nas ajudas e PowerShell para o motor de áudio.
- Motor de Jogo em Prolog: Gestão de estados, validação de regras e base de conhecimento.
- 🤖 Ajuda com IA (GenAI): A "Ajuda Telefónica" conecta-se ao modelo Gemma (via Ollama) para gerar respostas dinâmicas e justificadas em tempo real.
- 🔊 Ambiente Sonoro: Integração com o sistema de áudio do Windows para reproduzir a banda sonora icónica e efeitos sonoros.
- 🖥️ Interface Consola (HUD): Renderização gráfica baseada em caracteres com animações simples.
Devido à utilização de componentes nativos de áudio via PowerShell, este projeto é estritamente para Windows.
| Componente | Requisito |
|---|---|
| SO | Windows 10 ou 11 |
| Prolog | SWI-Prolog (v9.2.9) |
| Python | Versão 3.13 |
| AI Engine | Ollama instalado |
git clone [https://github.com/Luismpso/LIA.git](https://github.com/Luismpso/LIA.git)
cd LIAO jogo utiliza o modelo gemma para simular o "amigo inteligente" na ajuda telefónica. No terminal, execute:
ollama pull gemma
Se a ajuda telefónica falhar, é provável que o Windows esteja a tentar abrir a Loja em vez do Python.
Pesquise no Windows por "Manage App Execution Aliases" (Gerir aliases de execução de aplicações).
DESATIVE os interruptores para python.exe e python3.exe (App Installer).
-
Abra o ficheiro milionario.pl com o SWI-Prolog.
-
Maximize a janela da consola (Crucial para a renderização correta do HUD).
-
Execute o predicado de entrada:
?- jogar.
-
milionario.pl: Ponto de entrada e loop principal do jogo. -
perguntas.pl: Base de conhecimento (Factos) com as perguntas e níveis de dificuldade. -
regras.pl: Lógica de validação de respostas e progressão. -
audio.pl&animacao.pl: Módulos de interface e chamadas de sistema para multimédia. -
chamada/: Scripts Python que fazem a ponte entre o Prolog e o Ollama. -
report.pdf: Documentação técnica e análise do desenvolvimento.
- [Pedro Reis] - [PG59908@alunos.uminho.pt]
- [Luís Silva] - [PG60390@alunos.uminho.pt]
- [Guilherme Pinto] - [PG60225@alunos.uminho.pt]
- [João Azevedo] - [PG61693@alunos.uminho.pt]
- [Diogo Azevedo] - [PG61217@alunos.uminho.pt]
Este trabalho é de cariz estritamente académico. Universidade do Minho, Escola de Engenharia, Departamento de Informática.