Tracks
/
Java
Java
/
Übungen
/
Annalyns Infiltration
Annalyns Infiltration

Annalyns Infiltration

Lernübung

Einführung

Boolesche Werte

Boolesche Werte in Java werden durch den Typ boolean dargestellt, dessen Werte entweder true oder false sein können.

Java unterstützt drei boolesche Operatoren:

  • ! (NOT): negiert den booleschen Wert
  • && (AND): nimmt zwei boolesche Werte und gibt true zurück, wenn beide true sind
  • || (OR): gibt true zurück, wenn mindestens einer der beiden booleschen Werte true ist

Beispiele

!true // => false
!false // => true
true && false // => false
true && true // => true
false || false // => false
false || true // => true

Anleitung

In dieser Übung implementierst du die Quest-Logik für ein neues RPG, das ein Freund entwickelt. Die Hauptfigur des Spiels ist Annalyn, ein mutiges Mädchen mit einem wilden und treuen Hund. Doch dann geschieht ein Unglück: Ihre beste Freundin wurde entführt, als sie im Wald Beeren sammelte. Annalyn will ihre Freundin finden und befreien und nimmt auf ihrer Suche vielleicht ihren Hund mit.

Nachdem sie eine Weile der Spur gefolgt ist, entdeckt Annalyn das Lager, in dem ihre 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:

  • Schneller Angriff: Ein schneller Angriff ist möglich, wenn der Ritter schläft, denn er braucht Zeit, um seine Rüstung anzulegen, und ist dabei verwundbar.
  • Ausspionieren: Die Gruppe kann ausspioniert werden, wenn mindestens einer von ihnen wach ist. Andernfalls ist das Ausspionieren Zeitverschwendung.
  • Gefangenen signalisieren: Dem Gefangenen kann mit Vogelstimmen ein Signal gegeben werden, wenn der Gefangene wach ist und der Bogenschütze schläft. Bogenschützen sind im Signalgeben mit Vogelstimmen ausgebildet und könnten die Nachricht abfangen, wenn sie wach sind.
  • 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 hat keine Zeit, sich bereit zu machen, 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 sowohl der Ritter als auch der Bogenschütze schlafen. Wenn der Gefangene jedoch schläft, kann er nicht befreit werden, denn er würde durch Annalyns plötzliches Auftauchen erschrecken und den Ritter und den Bogenschützen aufwecken.

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

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

Implementiere die (statische) Methode AnnalynsInfiltration.canFastAttack(), die einen booleschen Wert entgegennimmt, der angibt, ob der Ritter wach ist. Diese Methode gibt true zurück, wenn ein schneller Angriff basierend auf dem Zustand des Ritters möglich ist. Andernfalls gibt sie false zurück:

boolean knightIsAwake = true;
AnnalynsInfiltration.canFastAttack(knightIsAwake);
// => false

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

Implementiere die (statische) Methode AnnalynsInfiltration.canSpy(), die drei boolesche Werte entgegennimmt, die angeben, ob der Ritter, der Bogenschütze bzw. der Gefangene wach sind. Die Methode gibt true zurück, wenn die Gruppe basierend auf dem Zustand der drei Figuren ausspioniert werden kann. Andernfalls gibt sie false zurück:

boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
AnnalynsInfiltration.canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. Prüfen, ob dem Gefangenen ein Signal gegeben werden kann

Implementiere die (statische) Methode AnnalynsInfiltration.canSignalPrisoner(), die zwei boolesche Werte entgegennimmt, die angeben, ob der Bogenschütze bzw. der Gefangene wach sind. Die Methode gibt true zurück, wenn dem Gefangenen basierend auf dem Zustand der beiden Figuren ein Signal gegeben werden kann. Andernfalls gibt sie false zurück:

boolean archerIsAwake = false;
boolean prisonerIsAwake = true;
AnnalynsInfiltration.canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

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

Implementiere die (statische) Methode AnnalynsInfiltration.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 anwesend ist. Die Methode gibt true zurück, wenn der Gefangene basierend auf dem Zustand der drei Figuren und der Anwesenheit von Annalyns Hund befreit werden kann. Andernfalls gibt sie false zurück:

boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
boolean petDogIsPresent = false;
AnnalynsInfiltration.canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Java Exercism

Bereit, mit Annalyns Infiltration zu starten?

Melde dich bei Exercism an, um Java mit 26 Konzepte158 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.