Immutable Towers é um jogo do gênero Tower Defense, desenvolvido em Haskell no âmbito da cadeira Laboratórios de Informática I, do curso de Engenharia Informática na Universidade do Minho (ano letivo 2024/25).
O objetivo do jogo é impedir que ondas de inimigos alcancem a base do jogador. Para isso, é necessário posicionar estrategicamente torres que atacam automaticamente os inimigos, evitando que estes destruam a base.
O enunciado do projeto pode ser consultado aqui
O jogo permite ao jogador escolher entre duas opções de textura, acessíveis através do menu de texturas. A diferença visual entre elas pode ser observada nas imagens abaixo:
O jogo permite ao jogador escolher entre três níveis distintos, acessíveis através do menu de seleção de nível. Inicialmente, apenas o nível 1 está disponível. À medida que o jogador vence cada nível, os seguintes são desbloqueados progressivamente. Cada nível apresenta um mapa diferente, com distribuições e tipos de inimigos variados, oferecendo desafios únicos a cada etapa.
O jogo permite ao jogador pausar a qualquer momento durante um nível, pressionando a tecla TAB. No menu de pausa, é possível encontrar uma opção para reiniciar o nível atual, voltando ao seu início.
Ao completar todas as fases, o jogador recebe uma mensagem de parabéns junto com o seguinte menu:
As restantes funcionalidades extras podem ser consultadas aqui.
- Matheus Monteiro Azevedo - a111430
- Francisco Luciano Martins - a111775
Pode compilar e executar o programa através dos comandos build e run do Cabal.
cabal run --verbose=0Para abrir o interpretador do Haskell (GHCi) com o projeto carregado, utilize o comando repl do Cabal
cabal replO projecto utiliza a biblioteca HUnit para fazer testes unitários.
Execute os testes com o comando test do Cabal e utilize a flag --enable-coverage para gerar um relatório de cobertura de testes.
cabal test --enable-coverageExecute os exemplos da documentação como testes com a biblioteca
doctest. Para instalar o
executavel utilize o comando cabal install doctest.
cabal repl --build-depends=QuickCheck,doctest --with-ghc=doctest --verbose=0A documentação do projeto pode ser gerada recorrendo ao Haddock.
cabal haddock








