Safe HaskellNone

Tarefa2

Synopsis

Documentation

piecex :: Int -> Corridor -> Piece #

A função piecex é uma função auxiliar da função getpiece. Esta descobre a peça que está numa determinada posição num corredor

getpiece :: Coords -> Maze -> Piece #

A função getpiece é responsável por encontar uma peça que está numas determinadas coordenadas num Labirinto.

getPacmanCoords :: [Player] -> Coords #

A função getPacmanCoords é responsável por encontrar de entre uma lista de quaisquer jogadores as coordenadas do pacman.

getPlayerlist :: State -> [Player] #

A função getPlayerlist é responsável por retirar de um State a sua lista de players.

getMaze :: State -> Maze #

A função getMaze é responsável por retirar de um State o seu Maze.

replaceMaze :: State -> Maze -> State #

A função replaceMaze é responsável por inserir um determinado Maze num State.

replacePiece :: State -> Maze #

A função replacePiece é responsável por alterar o Maze de um determinado State para outro (segundo os Movimentos do Pacman simulando que ele esteja a comer essas Pieces).

getPacman :: [Player] -> Player #

A função getPacman é responsável por isolar o Pacman de entre uma lista de Players.

rmPacman :: [Player] -> [Player] #

A função rmPacman é responsável por retirar o player Pacman da lista com todos os players.

setPlayerOrientation :: Player -> Orientation -> Player #

A função setPlayerOrientation é responsável por colocar uma determinada orientação num Player à escolha.

play :: Play -> State -> State #

A função play é a função principal da tarefa 3 e é responsável por todas as condições principais utilizando as outras funções para a definir.

pieceMove :: Play -> State -> State #

A função pieceMove é responsável por traduzir uma jogada simples, ou seja, onde não há interferências de Ghosts.

checkPacID :: [Player] -> Int -> Bool #

A função checkPacID é responsável por verificar se um número é o valor do identificador do pacman.

checkNextGhost :: Play -> State -> Bool #

A função checkNextGhost é responsável por verificar se existe algum ghost na posição seguinte à do pacman. É importante para o caso de Pacman vs Ghost.

moveNextGhost :: Play -> State -> State #

A função moveNextGhost é responsável por fazer o confronto entre o pacman e os ghots através de diferentes funções definidas anteriormente e postriormente.

numberOfGs :: Play -> State -> Int #

A função numberOfGhosts é responsável por contar o número de ghosts com uma determinada coordenada de entre uma lista de players.

numberOfDeadGs :: Play -> State -> Int #

A função numberOfDeadGs é responsável por contar o número de ghosts cujo Mode é Dead e que se encontrem na coordenada seguinte à do pacman

findGhosts :: [Player] -> Coords -> [Player] #

A função findghosts é responsável por encontar numa lista de quaisquer players os ghosts com uma certa coordenada.

setGhostsCoords :: [Player] -> Coords -> [Player] #

A setGhostsCoords é responsável por colocar colocar coordenadas num conjunto de Ghosts de uma lista.

getPacLifes :: [Player] -> Int #

A função getPacLifes é responsável por dar de entre uma lista de players o número de vidas do pacman.

getsoloPacLifes :: Player -> Int #

A função getsoloPacLifes é responsável por dar o valor das vidas de um player.

loseLife :: Player -> Player #

A função loseLife é responsável por retirar uma vida ao pacman.

rmGhosts #

Arguments

:: [Player] 
-> [Player] 
-> [Player]

takes a playerlist and removes the same players of the second

A função rmGhots é responsável por remover uma lista de ghosts de uma lista de ghots.

getGhostsModes :: [Player] -> [GhostMode] #

A função getGhostsModes utiliza a função getGhostMode como auxiliar e é responsável por dar uma lista com todos os modos de uma lista de players Ghost.

getGhostMode :: Player -> GhostMode #

A função getGhostMode é responsável por dar o mode de ghost.

getGhostsByMode :: GhostMode -> [Player] -> [Player] #

A função getGhostsByMode é responsável por retirar de uma lista de players os ghosts com um determinado GhostMode.

setGhostsMode :: GhostMode -> [Player] -> [Player] #

A função setGhostsMode é responsável por alterar o estado de fantasmas uma qualquer lista de players, independentemente do tipo ghost ou do tipo pacman.

setPacMode :: PacMode -> Player -> Player #

A função setPacMode é responsável por alterar o estado de um player Pacman por um qualquer.

initialCoordsPac :: Maze -> Coords #

A função initialCoordsPac dá as coordenadas do pacman quando este morre.

getMiddleOfMaze :: Maze -> Coords #

A getMiddleofMaze é responsável por dar as coordenadas do meio da casa dos Ghots,importante para quando ocorre a morte de um ghost.

checkTunnel :: Play -> State -> Bool #

A função checkTunnel verifica se o player que se quer mover está em situação de túnel. Assim, se esta condição for válida será possivel chamar a função moveTunnel para alterar as coordenadas do Pacman.

moveTunnel :: Play -> State -> State #

A função moveTunnel é responsável por alterar as coordenadas do Pacman e garante que não é alterado mais nenhum valor.

foodlittleMove :: Play -> State -> State #

A função foodlittleMove é responsável por tratar do movimento do pacman quando a peça seguinte é Food Little e não há intervenção de fantasmas. Para tal utiliza a função pacFLittle que altera alguns dos valores necessários no pacman tais como os pontos e as coordenadas.

foodBigMove :: Play -> State -> State #

A função foodBigMove é responsável por tratar do movimento do pacman quando a peça seguinte é Food Big e não há intervenção de fantasmas. Para tal utiliza a função pacFBig que altera alguns dos valores necessários no pacman mas também usa importantemente a função setMega definida mais abaixo.

emptyMove :: Play -> State -> State #

A função emptyMove,através da sua auxiliar pacEmpty cujo objetivo é alterar as coordenadas do pacman que correspondem à posição seguinte, resultando disto o state final que é dado, isto quando se trata de um movimento onde a peça seguinte é Empty e não há intervenção de fantasmas.

addPlayerPoints :: Int -> Player -> Player #

A função addPlayerPoints é responsável por adicionar um qualquer número de pontos a um player à escolha.

setMega :: [Player] -> [Player] #

A função setMega é responsável por várias alterações ao nível dos players que são muito úteis, por exemplo na função foodBigMove.

repSetGet :: [Player] -> Orientation -> [Player] #

A função repSetGet é responsável pela substituição da orientação do Pacman, por uma à escolha, que está inserido numa lista de Players.

checkID :: Player -> Int -> Bool #

A função checkID é responsável por ver se um player tem o mesmo identificador que um número Inteiro. Esta função é útil para verificar sobre qual dos players é aplicado o Move.

checkNextpiece :: Play -> State -> Piece #

A função checkNextpiece é responsável por dar a próxima peça, tendo em consideração o identificador do (Move _ _ ) e o identificador de uma lista de players, através da função moveNewCoords e da função que está no ínicio da tarefa, a função getpiece.

moveNewCoords :: Play -> State -> Coords #

A função moveNewCoords é responsável por dar as coordenadas seguintes ao player cujo identificador é igual ao do (Move _ _), utilizando a função getPlayerCoords como auxiliar.

checkcoords :: State -> Bool #

A função checkcoords é responsável por verificar dentro de uma lista de players se algum deles está numa posição cuja Piece é uma Wall.

genMaze1 :: Int -> Int -> Int -> IO () #

Test