Tracks
/
Cairo
Cairo
/
Übungen
/
Annalyns Infiltration
Annalyns Infiltration

Annalyns Infiltration

Lernübung

Einführung

Boolesche Werte in Cairo werden durch den vordeklarierten booleschen Typ bool dargestellt, dessen Werte entweder true oder false sein können.

let speeding = true;   // Boolean variable 'speeding' set to 'true'
let has_error = false; // Boolean variable 'has_error' set to 'false' 

Cairo unterstützt drei logische Operatoren, die Ausdrücke zu booleschen Werten auswerten und entweder true oder false zurückgeben.

Operator Bedeutung
&& (und) Ist wahr, wenn beide Aussagen wahr sind.
|| (oder) Ist wahr, wenn mindestens eine Aussage wahr ist.
! (nicht) Ist nur wahr, wenn die Aussage falsch ist.

Anleitung

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. Doch dann schlägt das Unglück zu: Ihre beste Freundin wurde entführt, während sie im Wald Beeren suchte. Annalyn wird versuchen, ihre beste Freundin zu finden und zu befreien, und dabei optional ihren Hund mit auf diese Quest nehmen.

Nachdem sie eine Zeit lang 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 Annalyn die Entführer gefunden hat, überlegt sie, welche der folgenden Aktionen sie ausführen kann:

  • Schnellangriff: Ein Schnellangriff ist möglich, wenn der Ritter schläft, denn er braucht Zeit, um seine Rüstung anzulegen, sodass er verwundbar ist.
  • Spähen: Die Gruppe kann ausspioniert werden, wenn mindestens einer von ihnen wach ist. Andernfalls ist Spähen Zeitverschwendung.
  • Gefangenen signalisieren: Der Gefangene kann mit Vogelgeräuschen signalisiert werden, wenn der Gefangene wach ist und der Bogenschütze schläft, denn Bogenschützen sind im Signalgeben mit Vögeln ausgebildet, sodass sie die Nachricht abfangen könnten.
  • Gefangenen befreien: Annalyn kann versuchen, sich ins Lager zu schleichen, um den Gefangenen zu befreien. Das ist riskant und kann nur auf eine von zwei Arten gelingen:
    • Wenn Annalyn ihren Hund dabei hat, kann sie den Gefangenen befreien, wenn der Bogenschütze schläft. Der Ritter hat Angst vor dem Hund, und der Bogenschütze wird keine Zeit haben, sich fertig zu machen, bevor Annalyn und der Gefangene entkommen können.
    • Wenn Annalyn ihren Hund nicht dabei hat, müssen sie und der Gefangene sehr leise sein! Annalyn kann den Gefangenen befreien, wenn der Gefangene wach ist und sowohl der Ritter als auch der Bogenschütze schlafen. Wenn der Gefangene jedoch schläft, kann er nicht befreit werden: Der Gefangene würde durch Annalyns plötzliches Auftauchen erschreckt werden und den Ritter und den Bogenschützen wecken.

Du hast vier Aufgaben: Du sollst die Logik implementieren, die anhand des Zustands der drei im Wald gefundenen Charaktere und der Anwesenheit von Annalyns Hund bestimmt, ob die oben genannten Aktionen verfügbar sind.

1. Prüfen, ob ein Schnellangriff möglich ist

Definiere die Funktion can_fast_attack(), die einen booleschen Wert entgegennimmt, der angibt, ob der Ritter wach ist. Diese Funktion gibt true zurück, wenn ein Schnellangriff basierend auf dem Zustand des Ritters möglich ist. Andernfalls gibt sie false zurück:

let knight_awake = true;
can_fast_attack(knight_awake); // false

2. Prüfen, ob die Gruppe ausspioniert werden kann

Definiere die Funktion can_spy(), die drei boolesche Werte entgegennimmt, die angeben, ob der Ritter, der Bogenschütze bzw. der Gefangene wach ist. Die Funktion gibt true zurück, wenn die Gruppe ausspioniert werden kann, basierend auf dem Zustand der drei Charaktere. Andernfalls gibt sie false zurück:

let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
can_spy(knight_awake, archer_awake, prisoner_awake); // true

3. Prüfen, ob der Gefangene signalisiert werden kann

Definiere die Funktion can_signal_prisoner(), die zwei boolesche Werte entgegennimmt, die angeben, ob der Bogenschütze bzw. der Gefangene wach ist. Die Funktion gibt true zurück, wenn der Gefangene signalisiert werden kann, basierend auf dem Zustand der beiden Charaktere. Andernfalls gibt sie false zurück:

let archer_awake = false;
let prisoner_awake = true;
can_signal_prisoner(archer_awake, prisoner_awake); // true

4. Prüfen, ob der Gefangene befreit werden kann

Definiere die Funktion can_free_prisoner(), die vier boolesche Werte entgegennimmt. Die ersten drei Parameter geben an, ob der Ritter, der Bogenschütze bzw. der Gefangene wach ist. Der letzte Parameter gibt an, ob Annalyns Hund anwesend ist. Die Funktion gibt true zurück, wenn der Gefangene befreit werden kann, basierend auf dem Zustand der drei Charaktere und der Anwesenheit von Annalyns Hund. Andernfalls gibt sie false zurück:

let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
let dog_present = false;
can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present); // false
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Cairo Exercism

Bereit, mit Annalyns Infiltration zu starten?

Melde dich bei Exercism an, um Cairo mit 25 Konzepte68 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.