Parcours
/
Elixir
Elixir
/
Exercices
/
Règles de Pac-Man
Règles de Pac-Man

Règles de Pac-Man

Exercice d'apprentissage

Introduction

Booléens

Elixir représente les valeurs vrai et faux avec le type booléen. Il n'y a que deux valeurs : true et false. On peut affecter ces valeurs à une variable :

true_variable = true
false_variable = false

On peut évaluer des expressions booléennes strictes à l'aide des opérateurs and/2, or/2 et 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

Quand on écrit une fonction qui renvoie une valeur booléenne, il est idiomatique de terminer le nom de la fonction par un ?. On peut utiliser la même convention pour les variables qui stockent des valeurs booléennes.

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

Instructions

Dans cet exercice, on va traduire quelques règles du jeu classique Pac-Man en fonctions Elixir.

Il y a quatre règles à traduire, toutes liées aux états du jeu.

Ne te préoccupe pas de la façon dont les arguments sont obtenus, concentre-toi simplement sur leur combinaison pour renvoyer le résultat voulu.

1. Définis si Pac-Man mange un fantôme

Définis la fonction Rules.eat_ghost?/2 qui prend deux arguments (si Pac-Man a une super pac-gomme active et si Pac-Man touche un fantôme) et renvoie une valeur booléenne indiquant si Pac-Man peut manger le fantôme. La fonction doit renvoyer vrai uniquement si Pac-Man a une super pac-gomme active et touche un fantôme.

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

2. Définis si Pac-Man marque des points

Définis la fonction Rules.score?/2 qui prend deux arguments (si Pac-Man touche une super pac-gomme et si Pac-Man touche une pac-gomme) et renvoie une valeur booléenne indiquant si Pac-Man a marqué des points. La fonction doit renvoyer vrai si Pac-Man touche une super pac-gomme ou une pac-gomme.

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

3. Définis si Pac-Man perd

Définis la fonction Rules.lose?/2 qui prend deux arguments (si Pac-Man a une super pac-gomme active et si Pac-Man touche un fantôme) et renvoie une valeur booléenne indiquant si Pac-Man perd. La fonction doit renvoyer vrai si Pac-Man touche un fantôme et n'a pas de super pac-gomme active.

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

4. Définis si Pac-Man gagne

Définis la fonction Rules.win?/3 qui prend trois arguments (si Pac-Man a mangé toutes les pac-gommes, si Pac-Man a une super pac-gomme active et si Pac-Man touche un fantôme) et renvoie une valeur booléenne indiquant si Pac-Man gagne. La fonction doit renvoyer vrai si Pac-Man a mangé toutes les pac-gommes et n'a pas perdu d'après les arguments définis dans la partie 3.

Rules.win?(false, true, false)
# => false
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Elixir Exercism

Prêt à commencer Règles de Pac-Man ?

Inscris-toi sur Exercism pour apprendre et maîtriser Elixir avec 58 concepts168 exercices, et un vrai mentorat humain, le tout gratuitement.