motherload
CopyrightALUNO_1_NOME <ALUNO_1_NUMERO@alunos.uminho.pt>
ALUNO_2_NOME <ALUNO_2_NUMERO@alunos.uminho.pt>
Safe HaskellNone
LanguageGHC2021

Tarefa0_2026

Description

Módulo que define funções auxiliares específicas do modelo de jogo, úteis na realização do projeto de LI1/LP1 em 2026/27.

Synopsis

Mapa

blocoEm :: Posicao -> Mapa -> Maybe Bloco Source #

Devolve o bloco numa dada posição do mapa.

NB: Devolve Nothing sempre que a posição não pertence ao mapa. Isso /inclui posições com coordenadas negativas/ — que ocorrem naturalmente, por exemplo ao tentar subir a partir da linha 0 ou ao calcular o raio de uma explosão à superfície.

>>> blocoEm (0,0) [[Ar],[Terra]]
Just Ar
>>> blocoEm (-1,0) [[Ar],[Terra]]
Nothing

atualizaBloco :: Posicao -> Bloco -> Mapa -> Mapa Source #

Substitui o bloco numa dada posição do mapa.

NB: Devolve o próprio mapa se a posição não pertencer ao mapa.

eBlocoEscavavel :: Bloco -> Bool Source #

Verifica se um bloco é escavável, ou seja, se tem durezaBloco.

NB: Ar e Rocha não são escaváveis.

Escavadora

atualizaEscavadora :: (Escavadora -> Escavadora) -> Jogo -> Jogo Source #

Aplica uma transformação à escavadora do jogo.

apoiado :: Jogo -> Bool Source #

Verifica se a escavadora está apoiada, ou seja, se não está suspensa no ar.

A escavadora está apoiada se o bloco imediatamente abaixo existir e não for Ar, ou se estiver na última linha do mapa. Só se escava quando se está apoiado.

pesoCarga :: Escavadora -> Peso Source #

Peso total dos minérios transportados pela escavadora.

O peso limita a carga: ver capacidadeEscavadora.

valorCarga :: Escavadora -> Creditos Source #

Valor total dos minérios transportados pela escavadora, ou seja, quanto rende Vende.

sofreDano :: Int -> Escavadora -> Escavadora Source #

A escavadora perde vida, sem nunca ficar com vida negativa. É o que acontece com a Lava, com as explosões e com as quedas.

Edifícios

edificioEm :: Posicao -> Jogo -> Maybe TipoEdificio Source #

Devolve o tipo de edifício numa dada posição, se lá existir algum.

NB: Se houver mais do que um edifício na mesma posição — o que a Tarefa 1 não permite — devolve o primeiro da lista.