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 

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

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 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

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 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

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

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

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

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