Crystal hat einen Typ namens Bool.
Er repräsentiert die Werte true und false.
Crystal hat drei logische Operatoren (!, ||, &&), die Bools kombinieren und Ausdrücke bilden, die unterschiedliche Werte erzeugen.
&&)Der und-Operator in Crystal wird durch && dargestellt und gibt true zurück, wenn beide Werte true sind; andernfalls gibt er false zurück.
Beim und-Operator steht ein Bool rechts vom && und ein weiteres links davon.
true && true
# => true
true && false
# => false
||)Der oder-Operator in Crystal wird durch || dargestellt und gibt true zurück, wenn mindestens einer der angegebenen Werte true ist.
Wenn beide Werte false sind, gibt er false zurück.
Beim oder-Operator steht ein Bool rechts vom || und ein weiteres links davon.
true || true
# => true
true || false
# => true
false || false
# => false
!)Der nicht-Operator in Crystal wird durch ! dargestellt und gibt true zurück, wenn der angegebene Bool false ist, und false, wenn true übergeben wird.
Beim nicht-Operator steht ein Bool nach dem Operator (!).
!true
# => false
!false
# => true
())Wenn du mit booleschen Werten arbeitest, kannst du Klammern verwenden, um festzulegen, welche Bools zuerst ausgewertet werden. Das Ergebnis kann sich je nach Verwendung der Klammern unterscheiden. In Crystal wird zuerst ausgewertet, was in Klammern steht.
true && false && false || true
# => true
true && false && (false || true)
# => false
Da zuerst ausgewertet wird, was in Klammern steht, wirkt der nicht-Operator im folgenden Beispiel auf den Ausdruck innerhalb der Klammern.
!true && false
# => false
!(true && false)
# => true
Verwende Klammern nur, wenn sie das Ergebnis beeinflussen; ansonsten lässt du sie weg.
Du entwickelst gerade das neue, hoch angesehene Spiel Crystal Hunter. In dem Spiel bist du eine Spielfigur, die sich umherbewegt und Kristalle sammelt. Der Spieler gewinnt, wenn er alle Kristalle einsammelt. Wenn der Spieler mit einem Banditen in Berührung kommt, verliert er alle seine Kristalle und das Spiel. Es gibt eine Ausnahme von dieser Regel: Der Spieler kann ein aktives Power-up haben, das ihn für die Banditen unsichtbar macht.
Dein Ziel ist es, einige Regeln zu schreiben, die im Spiel verwendet werden.
In dem Spiel bekommt die Spielfigur Bonuspunkte, wenn sie einen Banditen berührt, während sie ein Power-up hat.
Definiere die Methode Rules#bonus_points?, die zwei Argumente entgegennimmt (ob die Spielfigur ein aktives Power-up hat und ob die Spielfigur einen Banditen berührt) und einen booleschen Wert zurückgibt, der angibt, ob die Spielfigur Bonuspunkte bekommt.
Die Methode soll nur dann true zurückgeben, wenn die Spielfigur ein aktives Power-up hat und einen Banditen berührt, andernfalls false.
Rules.new.bonus_points?(false, true)
# => false
Der Spieler bekommt in dem Spiel Punkte, wenn er einen Kristall oder ein Power-up einsammelt.
Definiere die Methode Rules#score?, die zwei Argumente entgegennimmt (ob die Spielfigur ein Power-up berührt und ob die Spielfigur einen Kristall berührt) und einen booleschen Wert zurückgibt, der angibt, ob die Spielfigur gepunktet hat.
Die Methode soll true zurückgeben, wenn die Spielfigur ein Power-up oder einen Kristall berührt, andernfalls false.
Rules.new.score?(true, true)
# => true
Definiere die Methode Rules#lose?, die zwei Argumente entgegennimmt (ob die Spielfigur ein aktives Power-up hat und ob die Spielfigur einen Banditen berührt) und einen booleschen Wert zurückgibt, der angibt, ob die Spielfigur verliert.
Die Methode soll true zurückgeben, wenn die Spielfigur einen Banditen berührt und kein aktives Power-up hat, andernfalls false.
Rules.new.lose?(false, true)
# => true
Definiere die Methode Rules#win?, die drei Argumente entgegennimmt (ob die Spielfigur alle Kristalle eingesammelt hat, ob die Spielfigur ein aktives Power-up hat und ob die Spielfigur einen Banditen berührt) und einen booleschen Wert zurückgibt, der angibt, ob die Spielfigur gewinnt.
Die Methode soll true zurückgeben, wenn die Spielfigur alle Kristalle gesammelt hat und gemäß den in Teil 3 definierten Argumenten nicht verloren hat, andernfalls false.
Rules.new.win?(false, true, false)
# => false
Melde dich bei Exercism an, um Crystal mit 26 Konzepte142 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.