Tracks
/
PHP
PHP
/
Übungen
/
Annalyns Infiltration
Annalyns Infiltration

Annalyns Infiltration

Lernübung

Einführung

Boolesche Werte

Der Typ bool (kurz für boolescher Wert) hat nur zwei Werte: true und false. Bei den Literalwerten true und false spielt die Groß- und Kleinschreibung im Code keine Rolle.

<?php

$value_is_true = true;
$value_is_false = false;

Boolesche Werte sind häufig das Ergebnis eines Operators in einem logischen Ausdruck und werden dann in Kontrollstrukturen verwendet.

Logische Operatoren

Es gibt mehrere logische Operatoren:

  • !$a: gibt true zurück, wenn $a nicht true ist
  • $a && $b: gibt true zurück, wenn sowohl $a als auch $b true sind
  • $a || $b: gibt true zurück, wenn $a oder $b true ist
Caution

Es gibt die Operatoren and und or, die jeweils komplementär zu && und || sind. Sie verhalten sich nicht wie && und || und können unerwartete Ergebnisse liefern, deshalb wird von ihrer Verwendung abgeraten.

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. Unglücklicherweise schlägt das Unheil zu, denn ihre beste Freundin wurde entführt, während sie im Wald nach Beeren suchte. Annalyn versucht, ihre beste Freundin zu finden und zu befreien, wobei sie ihren Hund auf dieser Quest mitnehmen kann.

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:

  • Schneller Angriff: Ein schneller Angriff ist möglich, wenn der Ritter **schläft, denn er braucht Zeit, um seine Rüstung anzulegen, und ist so verwundbar.
  • Spionieren: Die Gruppe kann ausspioniert werden, wenn mindestens einer von ihnen wach ist. Andernfalls ist Spionieren Zeitverschwendung.
  • Gefangenen signalisieren: Dem Gefangenen kann mit Vogelrufen ein Signal gegeben werden, wenn der Gefangene wach ist und der Bogenschütze **schläft, denn Bogenschützen sind im Vogel-Signalisieren ausgebildet und könnten die Nachricht abfangen.
  • 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 retten, wenn der Bogenschütze schläft. Der Ritter hat Angst vor dem Hund und der Bogenschütze hat keine Zeit, sich vorzubereiten, bevor Annalyn und der Gefangene entkommen können.
    • Wenn Annalyn ihren Hund nicht dabei hat, müssen sie und der Gefangene sehr vorsichtig sein! Annalyn kann den Gefangenen befreien, wenn der Gefangene wach ist und der Ritter und der Bogenschütze beide schlafen, aber wenn der Gefangene **schläft, kann er nicht gerettet werden: Der Gefangene würde durch Annalyns plötzliches Erscheinen erschrecken und den Ritter und den Bogenschützen aufwecken.

Du hast vier Aufgaben: die Logik zu implementieren, die anhand des Zustands der drei im Wald gefundenen Figuren und der Anwesenheit von Annalyns Hund bestimmt, ob die oben genannten Aktionen möglich sind.

1. Prüfe, ob die Aktion ‚Schneller Angriff‘ möglich ist

Implementiere eine Funktion namens canFastAttack, die einen booleschen Wert entgegennimmt, der angibt, ob der Ritter wach ist. Die Funktion gibt true zurück, wenn die Aktion ‚Schneller Angriff‘ basierend auf dem Zustand der Figur möglich ist. Andernfalls gibt sie false zurück:

<?php
$is_knight_awake = true;

$infiltration = new AnnalynsInfiltration();
$infiltration->canFastAttack($is_knight_awake);
// => false

2. Prüfe, ob die Aktion ‚Spionieren‘ möglich ist

Implementiere eine Funktion namens canSpy, 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 Aktion ‚Spionieren‘ basierend auf dem Zustand der Figuren möglich ist. Andernfalls gibt sie false zurück:

<?php
$is_knight_awake = false;
$is_archer_awake = true;
$is_prisoner_awake = false;

$infiltration = new AnnalynsInfiltration();
$infiltration->canSpy($is_knight_awake, $is_archer_awake, $is_prisoner_awake);
// => true

3. Prüfe, ob die Aktion ‚Gefangenen signalisieren‘ möglich ist

Implementiere eine Funktion namens canSignal, die zwei boolesche Werte entgegennimmt, die angeben, ob der Bogenschütze bzw. der Gefangene wach ist. Die Funktion gibt true zurück, wenn die Aktion ‚Gefangenen signalisieren‘ basierend auf dem Zustand der Figuren möglich ist. Andernfalls gibt sie false zurück:

<?php
$is_archer_awake = false;
$is_prisoner_awake = true;

$infiltration = new AnnalynsInfiltration();
$infiltration->canSignal($is_archer_awake, $is_prisoner_awake);
// => true

4. Prüfe, ob die Aktion ‚Gefangenen befreien‘ möglich ist

Implementiere eine Funktion namens canLiberate, 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 die Aktion ‚Gefangenen befreien‘ basierend auf dem Zustand der Figuren und der Anwesenheit von Annalyns Hund möglich ist. Andernfalls gibt sie false zurück:

<?php
$is_knight_awake = false;
$is_archer_awake = true;
$is_prisoner_awake = false;
$is_dog_present = false;

$infiltration = new AnnalynsInfiltration();
$infiltration->canLiberate(
    $is_knight_awake,
    $is_archer_awake,
    $is_prisoner_awake,
    $is_dog_present
);
// => false
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
PHP Exercism

Bereit, mit Annalyns Infiltration zu starten?

Melde dich bei Exercism an, um PHP mit 11 Konzepte122 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.