Percursos
/
Elixir
Elixir
/
Exercícios
/
Regras do Pacman
Regras do Pacman

Regras do Pacman

Exercício de aprendizagem

Introdução

Booleanos

O Elixir representa os valores verdadeiro e falso com o tipo booleano. Existem apenas dois valores: true e false. Estes valores podem ser associados a uma variável:

true_variable = true
false_variable = false

Podemos avaliar expressões booleanas estritas com os operadores and/2, or/2 e not/1.

true_variable = true and true
false_variable = true and false

true_variable = false or true
false_variable = false or false

true_variable = not false
false_variable = not true

Quando escreves uma função que devolve um valor booleano, é idiomático terminar o nome da função com um ?. A mesma convenção pode ser usada para variáveis que guardam valores booleanos.

def either_true?(a?, b?) do
  a? or b?
end

Instruções

Neste exercício, precisas de traduzir algumas regras do clássico jogo Pac-Man para funções de Elixir.

Tens quatro regras para traduzir, todas relacionadas com os estados do jogo.

Não te preocupes com a forma como os argumentos são obtidos, concentra-te apenas em combinar os argumentos para devolver o resultado pretendido.

1. Define se o Pac-Man come um fantasma

Define a função Rules.eat_ghost?/2, que recebe dois argumentos (se o Pac-Man tem uma pastilha de energia ativa e se o Pac-Man está a tocar num fantasma) e devolve um valor Boolean que indica se o Pac-Man consegue comer o fantasma. A função só deve devolver true se o Pac-Man tiver uma pastilha de energia ativa e estiver a tocar num fantasma.

Rules.eat_ghost?(false, true)
# => false

2. Define se o Pac-Man pontua

Define a função Rules.score?/2, que recebe dois argumentos (se o Pac-Man está a tocar numa pastilha de energia e se o Pac-Man está a tocar num ponto) e devolve um valor Boolean que indica se o Pac-Man pontuou. A função deve devolver true se o Pac-Man estiver a tocar numa pastilha de energia ou num ponto.

Rules.score?(true, true)
# => true

3. Define se o Pac-Man perde

Define a função Rules.lose?/2, que recebe dois argumentos (se o Pac-Man tem uma pastilha de energia ativa e se o Pac-Man está a tocar num fantasma) e devolve um valor Boolean que indica se o Pac-Man perde. A função deve devolver true se o Pac-Man estiver a tocar num fantasma e não tiver uma pastilha de energia ativa.

Rules.lose?(false, true)
# => true

4. Define se o Pac-Man ganha

Define a função Rules.win?/3, que recebe três argumentos (se o Pac-Man comeu todos os pontos, se o Pac-Man tem uma pastilha de energia ativa e se o Pac-Man está a tocar num fantasma) e devolve um valor Boolean que indica se o Pac-Man ganha. A função deve devolver true se o Pac-Man tiver comido todos os pontos e não tiver perdido, de acordo com os argumentos definidos na parte 3.

Rules.win?(false, true, false)
# => false
Editar via GitHub A ligação abre numa nova janela ou separador
Elixir Exercism

Estás pronto para começar Regras do Pacman?

Inscreve-te no Exercism para aprenderes e dominares Elixir com 58 conceitos168 exercícios, e mentoria humana real, tudo grátis.