aulify · Mini-Projecto
UC UC00608 · T. Desenv. Software
Versão · Aluno
Mini-Projecto · Simulador de RPG por texto
Domínio rico com classes, herança e polimorfismo
Contexto
Cada par/trio constrói um mini-RPG por consola com personagens, inimigos, itens e combate. O objectivo é exercitar OO num domínio rico: várias entidades, herança natural, polimorfismo claro, composição inevitável.
Requisitos
Funcionais
- Hierarquia de personagens —
Personagem(abstracta),Guerreiro,Mago,Arqueiro. - Sistema de combate — ataques diferentes por classe, dano calculado.
- Itens — pelo menos
Arma,Pocao, comInventario. - Mapa simples — 3+ "salas" com inimigos.
- Persistência — salvar/carregar estado em JSON.
- CLI — menu interactivo com escolhas.
Não-funcionais
- 15+ classes distribuídas por módulos.
- Mínimo 10 testes pytest para classes principais.
- Aplicação clara dos princípios OO (encapsulamento, herança, polimorfismo).
- Git com pelo menos 8 commits descritivos.
Fases
Fase 1 · 1.5h
Modelação
- Desenhar diagrama UML simples das classes.
- Identificar herança, composição.
- Esboço de fluxo do jogo.
Diagrama (mão ou drawio) + lista de classes com responsabilidades.
Fase 2 · 2h
Personagens
- Classe abstracta
Personagemcom vida, ataque, defesa. - Subclasses
Guerreiro,Mago,Arqueirocom características distintas. - Métodos
atacar(alvo),receber_dano(qty),esta_vivo().
personagens.py + 5 testes.
Fase 3 · 2h
Itens e inventário
- Hierarquia de itens:
Item,Arma,Pocao. - Classe
Inventarioque contém lista de itens. - Métodos:
adicionar,remover,usar(item, personagem).
itens.py, inventario.py + 3 testes.
Fase 4 · 2h
Mapa e combate
- Classe
Salacom inimigos e itens iniciais. - Classe
Mapaque liga salas. - Loop de combate (turnos jogador vs inimigo).
mapa.py, combate.py + 2 testes.
Fase 5 · 1.5h
Persistência e CLI
- Salvar estado completo em JSON.
- Carregar para retomar.
- Menu CLI com escolhas (mover, atacar, usar item, guardar, sair).
main.py jogável.
Fase 6 · 1h
Polish, README, apresentação
- README com regras do jogo, instruções.
- Demo ao vivo de 3-5 min.
Repositório final + demo.
Critérios de avaliação
| Item | Peso |
|---|---|
| Hierarquia bem desenhada | 20% |
| Personagens com comportamentos distintos | 15% |
| Inventário e itens | 15% |
| Combate funcional | 15% |
| Persistência | 10% |
| Testes (qtd. + qualidade) | 15% |
| Aplicação correcta de OO | 5% |
| Git history + README | 5% |
Reflexão
Em meia página: que decisão de modelação foi mais difícil? Que parte do código mais ganhaste em escrever OO? Onde sentiste que OO complicou em vez de simplificar?