Der Typ Bool ist einer der Grundbausteine der Sprache.
Er beschreibt, ob etwas wahr oder falsch ist, mit den jeweiligen Werten True und False.
Boolesche Werte lassen sich mit den Operatoren && („UND") und || („ODER") kombinieren und mit der Funktion not negieren.
Boolesche Werte sind außerdem extrem nützlich, um Verzweigungen in deinem Code zu bauen, die nur ausgeführt werden, wenn bestimmte Bedingungen erfüllt sind.
In Elm machst du das mit einem if-then-else-Ausdruck, und zwar so:
if someCondition || (someOtherCondition && anotherCondition) then
doSomething
else
doSomethingElse
In dieser Übung implementierst du die Quest-Logik für ein neues RPG-Spiel, das ein Freund entwickelt. Die Hauptfigur des Spiels ist Annalyn, ein mutiges Mädchen mit einem wilden und treuen Hund. Unglücklicherweise kommt es zur Katastrophe: Ihre beste Freundin wurde entführt, während sie im Wald Beeren suchte. Annalyn versucht, ihre beste Freundin zu finden und zu befreien, wobei sie ihren Hund optional mit auf diese Quest nimmt.
Nachdem sie eine Weile der Spur ihrer besten Freundin gefolgt ist, findet sie das Lager, in dem ihre beste Freundin gefangen gehalten wird. Es stellt sich heraus, dass es zwei Entführer gibt: einen mächtigen Ritter und einen listigen Bogenschützen.
Nachdem sie die Entführer gefunden hat, überlegt Annalyn, welche der folgenden Aktionen sie ausführen kann:
Du hast fünf Aufgaben: die Logik zu implementieren, mit der sich feststellen lässt, ob die oben genannten Aktionen verfügbar sind, basierend auf dem Zustand der drei im Wald gefundenen Charaktere und darauf, ob Annalyns Hund dabei ist oder nicht.
Implementiere die Funktion canFastAttack, die einen booleschen Wert entgegennimmt, der angibt, ob der Ritter wach ist. Diese Funktion gibt True zurück, wenn basierend auf dem Zustand des Ritters ein schneller Angriff möglich ist. Andernfalls gibt sie False zurück:
knightIsAwake = True
canFastAttack knightIsAwake
--> False
Implementiere die Funktion canSpy, die drei boolesche Werte entgegennimmt, die angeben, ob der Ritter, der Bogenschütze bzw. der Gefangene wach sind. Die Funktion gibt True zurück, wenn basierend auf dem Zustand der drei Charaktere die Gruppe ausspioniert werden kann. Andernfalls gibt sie False zurück:
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
canSpy knightIsAwake archerIsAwake prisonerIsAwake
--> True
Implementiere die Funktion canSignalPrisoner, die zwei boolesche Werte entgegennimmt, die angeben, ob der Bogenschütze bzw. der Gefangene wach sind. Die Funktion gibt True zurück, wenn basierend auf dem Zustand der beiden Charaktere dem Gefangenen signalisiert werden kann. Andernfalls gibt sie False zurück:
archerIsAwake = False
prisonerIsAwake = True
canSignalPrisoner archerIsAwake prisonerIsAwake
--> True
Implementiere die Funktion canFreePrisoner, die vier boolesche Werte entgegennimmt. Die ersten drei Parameter geben an, ob der Ritter, der Bogenschütze bzw. der Gefangene wach sind. Der letzte Parameter gibt an, ob Annalyns Hund dabei ist. Die Funktion gibt True zurück, wenn basierend auf dem Zustand der drei Charaktere und der Anwesenheit von Annalyns Hund der Gefangene befreit werden kann. Andernfalls gibt sie False zurück:
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
petDogIsPresent = False
canFreePrisoner knightIsAwake archerIsAwake prisonerIsAwake petDogIsPresent
--> False
Implementiere die Funktion stealthAttackDamage, die einen booleschen Wert entgegennimmt, der angibt, ob Annalyn entdeckt wurde. Diese Funktion gibt 7 zurück, wenn sie entdeckt wurde, andernfalls 12.
annalynIsDetected = True
stealthAttackDamage annalynIsDetected
--> 7
Melde dich bei Exercism an, um Elm mit 28 Konzepte110 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.