Gleam représente les valeurs vrai et faux avec le type Bool. Il n'existe que deux valeurs : True et False. Ces valeurs peuvent être affectées à une variable :
let true_variable = True
let false_variable = False
Les opérateurs &&, || et ! permettent de manipuler des valeurs booléennes :
True && True // -> True
True && False // -> False
False || True // -> True
False || False // -> False
!False // -> True
!True // -> False
Les opérateurs && et || utilisent l'évaluation en court-circuit, ce qui signifie que l'expression à droite de l'opérateur n'est évaluée que si c'est nécessaire.
Chacun de ces opérateurs a une précédence différente : ! est évalué avant && et ||. On peut utiliser des accolades pour évaluer une partie de l'expression avant les autres :
!True && False // -> False
!{True && False} // -> True
Dans cet exercice, tu dois traduire quelques règles du jeu classique Pac-Man en fonctions Gleam.
Tu as 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 la combinaison des arguments pour renvoyer le résultat attendu.
Définis la fonction eat_ghost qui prend deux arguments (si Pac-Man a une super pastille active et si Pac-Man touche un fantôme) et qui renvoie une valeur booléenne indiquant si Pac-Man est capable de manger le fantôme. La fonction doit renvoyer True uniquement si Pac-Man a une super pastille active et touche un fantôme.
eat_ghost(False, True)
// -> False
Définis la fonction score qui prend deux arguments (si Pac-Man touche une super pastille et si Pac-Man touche un point) et qui renvoie une valeur booléenne indiquant si Pac-Man a marqué. La fonction doit renvoyer True si Pac-Man touche une super pastille ou un point.
score(True, True)
// -> True
Définis la fonction lose qui prend deux arguments (si Pac-Man a une super pastille active et si Pac-Man touche un fantôme) et qui renvoie une valeur booléenne indiquant si Pac-Man perd. La fonction doit renvoyer True si Pac-Man touche un fantôme et n'a pas de super pastille active.
lose(False, True)
// -> True
Définis la fonction win qui prend trois arguments (si Pac-Man a mangé tous les points, si Pac-Man a une super pastille active et si Pac-Man touche un fantôme) et qui renvoie une valeur booléenne indiquant si Pac-Man gagne. La fonction doit renvoyer True si Pac-Man a mangé tous les points et n'a pas perdu d'après les arguments définis dans la partie 3.
win(False, True, False)
// -> False
Inscris-toi sur Exercism pour apprendre et maîtriser Gleam avec 33 concepts122 exercices, et un vrai mentorat humain, le tout gratuitement.