Safe Haskell | Safe |
---|
LI11718
Description
Tipos de dados e funções auxiliares para a realização do projeto de LI1 em 2017/18.
- type Altura = Int
- data Orientacao
- type Posicao = (Int, Int)
- type Ponto = (Double, Double)
- type Angulo = Double
- type Tempo = Double
- type Velocidade = Ponto
- type Caminho = [Passo]
- data Passo
- data Mapa = Mapa (Posicao, Orientacao) Tabuleiro
- type Tabuleiro = [[Peca]]
- data Peca = Peca Tipo Altura
- data Tipo
- = Rampa Orientacao
- | Curva Orientacao
- | Recta
- | Lava
- type Dimensao = (Int, Int)
- data Carro = Carro {
- posicao :: Ponto
- direcao :: Angulo
- velocidade :: Velocidade
- data Jogo = Jogo {}
- data Propriedades = Propriedades {}
- data Acao = Acao {}
- dimensao :: Caminho -> Dimensao
- partida :: Caminho -> Posicao
- dirInit :: Orientacao
- altInit :: Altura
- altLava :: Altura
Tipos de dados
Básicos
data Orientacao #
Orientações no mapa.
Instances
Enum Orientacao # | |
Eq Orientacao # | |
Read Orientacao # | |
Show Orientacao # | |
type Velocidade = Ponto #
Vectores de velocidade.
Caminhos
Tipos de passos que podem occorrer num Caminho
.
Mapas
Mapa de um jogo, composto por um tabuleiro, uma posição inicial e uma altura inicial.
Constructors
Mapa (Posicao, Orientacao) Tabuleiro |
Uma peça num Tabuleiro
. A altura atribuída é sempre a do ponto mais baixo da peça.
Tipos de peças contidos num Tabuleiro
.
Constructors
Rampa Orientacao | |
Curva Orientacao | |
Recta | |
Lava |
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
|
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 | |
data Propriedades #
As propriedades físicas de um percurso.
Constructors
Propriedades | |
Instances
Eq Propriedades # | |
Read Propriedades # | |
Show Propriedades # | |
As ações que podem ser tomadas por cada jogador em cada instante.
Constructors
Acao | |
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