Gleam stellt wahre und falsche Werte mit dem Typ Bool dar. Es gibt nur zwei Werte: True und False. Diese Werte kannst du an eine Variable binden:
let true_variable = True
let false_variable = False
Mit den Operatoren &&, || und ! kannst du boolesche Werte manipulieren:
True && True // -> True
True && False // -> False
False || True // -> True
False || False // -> False
!False // -> True
!True // -> False
Die Operatoren && und || verwenden die Kurzschlussauswertung. Das bedeutet, dass Gleam den Ausdruck auf der rechten Seite des Operators nur auswertet, wenn es nötig ist.
Die Operatoren haben unterschiedliche Prioritäten: Gleam wertet ! vor && und || aus. Mit geschweiften Klammern kannst du einen Teil des Ausdrucks vor den anderen auswerten:
!True && False // -> False
!{True && False} // -> True
In dieser Übung übersetzt du einige Regeln aus dem klassischen Spiel Pac-Man in Gleam-Funktionen.
Du hast vier Regeln zu übersetzen, die alle mit den Spielzuständen zusammenhängen.
Mach dir keine Gedanken darüber, wie die Argumente zustande kommen. Konzentriere dich einfach darauf, die Argumente so zu kombinieren, dass das gewünschte Ergebnis zurückgegeben wird.
Definiere die Funktion eat_ghost, die zwei Argumente entgegennimmt (ob Pac-Man eine aktive Kraftpille hat und ob Pac-Man einen Geist berührt) und einen booleschen Wert dafür zurückgibt, ob Pac-Man den Geist fressen kann. Die Funktion sollte nur dann True zurückgeben, wenn Pac-Man eine aktive Kraftpille hat und einen Geist berührt.
eat_ghost(False, True)
// -> False
Definiere die Funktion score, die zwei Argumente entgegennimmt (ob Pac-Man eine Kraftpille berührt und ob Pac-Man einen Punkt berührt) und einen booleschen Wert dafür zurückgibt, ob Pac-Man punktet. Die Funktion sollte True zurückgeben, wenn Pac-Man eine Kraftpille oder einen Punkt berührt.
score(True, True)
// -> True
Definiere die Funktion lose, die zwei Argumente entgegennimmt (ob Pac-Man eine aktive Kraftpille hat und ob Pac-Man einen Geist berührt) und einen booleschen Wert dafür zurückgibt, ob Pac-Man verliert. Die Funktion sollte True zurückgeben, wenn Pac-Man einen Geist berührt und keine aktive Kraftpille hat.
lose(False, True)
// -> True
Definiere die Funktion win, die drei Argumente entgegennimmt (ob Pac-Man alle Punkte gefressen hat, ob Pac-Man eine aktive Kraftpille hat und ob Pac-Man einen Geist berührt) und einen booleschen Wert dafür zurückgibt, ob Pac-Man gewinnt. Die Funktion sollte True zurückgeben, wenn Pac-Man alle Punkte gefressen hat und aufgrund der in Teil 3 definierten Argumente nicht verloren hat.
win(False, True, False)
// -> False
Melde dich bei Exercism an, um Gleam mit 33 Konzepte122 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.