Safe HaskellSafe

LI11718

Contents

Description

Tipos de dados e funções auxiliares para a realização do projeto de LI1 em 2017/18.

Synopsis

Tipos de dados

Básicos

type Altura = Int #

Altura de uma peça num Tabuleiro.

data Orientacao #

Orientações no mapa.

Constructors

Norte 
Este 
Sul 
Oeste 

Instances

Enum Orientacao # 
Eq Orientacao # 

Methods

(==) :: Orientacao -> Orientacao -> Bool

(/=) :: Orientacao -> Orientacao -> Bool

Read Orientacao # 

Methods

readsPrec :: Int -> ReadS Orientacao

readList :: ReadS [Orientacao]

readPrec :: ReadPrec Orientacao

readListPrec :: ReadPrec [Orientacao]

Show Orientacao # 

Methods

showsPrec :: Int -> Orientacao -> ShowS

show :: Orientacao -> String

showList :: [Orientacao] -> ShowS

type Rep Orientacao # 
type Rep Orientacao = D1 (MetaData "Orientacao" "LI11718" "main" False) ((:+:) ((:+:) (C1 (MetaCons "Norte" PrefixI False) U1) (C1 (MetaCons "Este" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Sul" PrefixI False) U1) (C1 (MetaCons "Oeste" PrefixI False) U1)))

type Posicao = (Int, Int) #

Posições num Tabuleiro.

type Ponto = (Double, Double) #

Ponto no mapa.

type Angulo = Double #

Ângulo em graus.

type Tempo = Double #

Períodos de tempo.

type Velocidade = Ponto #

Vectores de velocidade.

Caminhos

type Caminho = [Passo] #

Uma sequência de passos que dá origem a um mapa.

data Passo #

Tipos de passos que podem occorrer num Caminho.

Constructors

Avanca

Segue em frente e mantem o nível

Sobe

Segue em frente e sobe um nível

Desce

Segue em frente e desce um nível

CurvaEsq

Curva à esquerda e mantem o nível

CurvaDir

Curva à direita e mantem o nível

Instances

Eq Passo # 

Methods

(==) :: Passo -> Passo -> Bool

(/=) :: Passo -> Passo -> Bool

Read Passo # 

Methods

readsPrec :: Int -> ReadS Passo

readList :: ReadS [Passo]

readPrec :: ReadPrec Passo

readListPrec :: ReadPrec [Passo]

Show Passo # 

Methods

showsPrec :: Int -> Passo -> ShowS

show :: Passo -> String

showList :: [Passo] -> ShowS

type Rep Passo # 
type Rep Passo = D1 (MetaData "Passo" "LI11718" "main" False) ((:+:) ((:+:) (C1 (MetaCons "Avanca" PrefixI False) U1) (C1 (MetaCons "Sobe" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Desce" PrefixI False) U1) ((:+:) (C1 (MetaCons "CurvaEsq" PrefixI False) U1) (C1 (MetaCons "CurvaDir" PrefixI False) U1))))

Mapas

data Mapa #

Mapa de um jogo, composto por um tabuleiro, uma posição inicial e uma altura inicial.

Constructors

Mapa (Posicao, Orientacao) Tabuleiro 

Instances

Eq Mapa # 

Methods

(==) :: Mapa -> Mapa -> Bool

(/=) :: Mapa -> Mapa -> Bool

Read Mapa # 

Methods

readsPrec :: Int -> ReadS Mapa

readList :: ReadS [Mapa]

readPrec :: ReadPrec Mapa

readListPrec :: ReadPrec [Mapa]

Show Mapa # 

Methods

showsPrec :: Int -> Mapa -> ShowS

show :: Mapa -> String

showList :: [Mapa] -> ShowS

type Rep Mapa # 
type Rep Mapa = D1 (MetaData "Mapa" "LI11718" "main" False) (C1 (MetaCons "Mapa" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Posicao, Orientacao))) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Tabuleiro))))

type Tabuleiro = [[Peca]] #

O tabuleiro do mapa, representado por uma matriz de Peca.

data Peca #

Uma peça num Tabuleiro. A altura atribuída é sempre a do ponto mais baixo da peça.

Constructors

Peca Tipo Altura 

Instances

Eq Peca # 

Methods

(==) :: Peca -> Peca -> Bool

(/=) :: Peca -> Peca -> Bool

Read Peca # 

Methods

readsPrec :: Int -> ReadS Peca

readList :: ReadS [Peca]

readPrec :: ReadPrec Peca

readListPrec :: ReadPrec [Peca]

Show Peca # 

Methods

showsPrec :: Int -> Peca -> ShowS

show :: Peca -> String

showList :: [Peca] -> ShowS

type Rep Peca # 
type Rep Peca = D1 (MetaData "Peca" "LI11718" "main" False) (C1 (MetaCons "Peca" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Tipo)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Altura))))

data Tipo #

Tipos de peças contidos num Tabuleiro.

Instances

Eq Tipo # 

Methods

(==) :: Tipo -> Tipo -> Bool

(/=) :: Tipo -> Tipo -> Bool

Read Tipo # 

Methods

readsPrec :: Int -> ReadS Tipo

readList :: ReadS [Tipo]

readPrec :: ReadPrec Tipo

readListPrec :: ReadPrec [Tipo]

Show Tipo # 

Methods

showsPrec :: Int -> Tipo -> ShowS

show :: Tipo -> String

showList :: [Tipo] -> ShowS

type Rep Tipo # 
type Rep Tipo = D1 (MetaData "Tipo" "LI11718" "main" False) ((:+:) ((:+:) (C1 (MetaCons "Rampa" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Orientacao))) (C1 (MetaCons "Curva" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Orientacao)))) ((:+:) (C1 (MetaCons "Recta" PrefixI False) U1) (C1 (MetaCons "Lava" PrefixI False) U1)))

type Dimensao = (Int, Int) #

Dimensões de um Tabuleiro.

data Carro #

O estado de um carro dentro de um Mapa. A direção da velocidade (movimento) não é necessariamente a mesma da direção do carro.

Constructors

Carro 

Fields

Instances

Eq Carro # 

Methods

(==) :: Carro -> Carro -> Bool

(/=) :: Carro -> Carro -> Bool

Read Carro # 

Methods

readsPrec :: Int -> ReadS Carro

readList :: ReadS [Carro]

readPrec :: ReadPrec Carro

readListPrec :: ReadPrec [Carro]

Show Carro # 

Methods

showsPrec :: Int -> Carro -> ShowS

show :: Carro -> String

showList :: [Carro] -> ShowS

type Rep Carro # 
type Rep Carro = D1 (MetaData "Carro" "LI11718" "main" False) (C1 (MetaCons "Carro" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "posicao") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Ponto)) ((:*:) (S1 (MetaSel (Just Symbol "direcao") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Angulo)) (S1 (MetaSel (Just Symbol "velocidade") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Velocidade)))))

Jogo

data Jogo #

O estado de um jogo dentro, incluindo o mapa e as suas propriedades e o estado dos vários jogadores. Os campos carros, nitros e historico devem ter a mesma dimensão, o número de jogadores.

Constructors

Jogo 

Fields

Instances

Eq Jogo # 

Methods

(==) :: Jogo -> Jogo -> Bool

(/=) :: Jogo -> Jogo -> Bool

Read Jogo # 

Methods

readsPrec :: Int -> ReadS Jogo

readList :: ReadS [Jogo]

readPrec :: ReadPrec Jogo

readListPrec :: ReadPrec [Jogo]

Show Jogo # 

Methods

showsPrec :: Int -> Jogo -> ShowS

show :: Jogo -> String

showList :: [Jogo] -> ShowS

type Rep Jogo # 
type Rep Jogo = D1 (MetaData "Jogo" "LI11718" "main" False) (C1 (MetaCons "Jogo" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "mapa") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Mapa)) (S1 (MetaSel (Just Symbol "pista") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Propriedades))) ((:*:) (S1 (MetaSel (Just Symbol "carros") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Carro])) ((:*:) (S1 (MetaSel (Just Symbol "nitros") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Tempo])) (S1 (MetaSel (Just Symbol "historico") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [[Posicao]]))))))

data Propriedades #

As propriedades físicas de um percurso.

Constructors

Propriedades 

Fields

  • k_atrito :: Double

    o atrito do piso

  • k_pneus :: Double

    o atrito dos pneus

  • k_acel :: Double

    a intensidade da aceleração

  • k_peso :: Double

    o peso do carro

  • k_nitro :: Double

    a intensidade do nitro

  • k_roda :: Double

    a sensibilidade do guiador

Instances

Eq Propriedades # 

Methods

(==) :: Propriedades -> Propriedades -> Bool

(/=) :: Propriedades -> Propriedades -> Bool

Read Propriedades # 

Methods

readsPrec :: Int -> ReadS Propriedades

readList :: ReadS [Propriedades]

readPrec :: ReadPrec Propriedades

readListPrec :: ReadPrec [Propriedades]

Show Propriedades # 

Methods

showsPrec :: Int -> Propriedades -> ShowS

show :: Propriedades -> String

showList :: [Propriedades] -> ShowS

type Rep Propriedades # 
type Rep Propriedades = D1 (MetaData "Propriedades" "LI11718" "main" False) (C1 (MetaCons "Propriedades" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "k_atrito") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Double)) ((:*:) (S1 (MetaSel (Just Symbol "k_pneus") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Double)) (S1 (MetaSel (Just Symbol "k_acel") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Double)))) ((:*:) (S1 (MetaSel (Just Symbol "k_peso") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Double)) ((:*:) (S1 (MetaSel (Just Symbol "k_nitro") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Double)) (S1 (MetaSel (Just Symbol "k_roda") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Double))))))

data Acao #

As ações que podem ser tomadas por cada jogador em cada instante.

Constructors

Acao 

Fields

  • acelerar :: Bool

    se está a acelerar

  • travar :: Bool

    se está a travar

  • esquerda :: Bool

    se está a curvar para a esquerda

  • direita :: Bool

    se está a curvar para a direita

  • nitro :: Maybe Int

    se o nitro está ativo em algum jogador

Instances

Eq Acao # 

Methods

(==) :: Acao -> Acao -> Bool

(/=) :: Acao -> Acao -> Bool

Read Acao # 

Methods

readsPrec :: Int -> ReadS Acao

readList :: ReadS [Acao]

readPrec :: ReadPrec Acao

readListPrec :: ReadPrec [Acao]

Show Acao # 

Methods

showsPrec :: Int -> Acao -> ShowS

show :: Acao -> String

showList :: [Acao] -> ShowS

type Rep Acao # 
type Rep Acao = D1 (MetaData "Acao" "LI11718" "main" False) (C1 (MetaCons "Acao" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "acelerar") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) (S1 (MetaSel (Just Symbol "travar") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool))) ((:*:) (S1 (MetaSel (Just Symbol "esquerda") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) ((:*:) (S1 (MetaSel (Just Symbol "direita") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) (S1 (MetaSel (Just Symbol "nitro") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int)))))))

Funções auxiliares fornecidas

dimensao :: Caminho -> Dimensao #

Dado um caminho, calcula a dimensão do tabuleiro correspondente.

>>> dimensao [CurvaDir,CurvaDir,CurvaDir,CurvaDir]
(4,4)

partida :: Caminho -> Posicao #

Dado um caminho, calcula a sua posição inicial no tabuleiro correspondente.

>>> partida [CurvaDir,CurvaDir,CurvaDir,CurvaDir]
(2,1)

dirInit :: Orientacao #

Direção inicial na construção de um caminho.

dirInit == Este

altInit :: Altura #

Altura inicial na construção de um caminho.

altInit == 0

altLava :: Altura #

Altura da lava.

altLava == 0