| 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