Tracks
/
C#
C#
/
Übungen
/
Annalyns Infiltration
Annalyns Infiltration

Annalyns Infiltration

Lernübung

Einführung

Boolesche Werte

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

C# unterstützt drei boolesche Operatoren: ! (NICHT), && (UND) und || (ODER).

Anleitung

In dieser Übung implementierst du die Quest-Logik für ein neues Rollenspiel, das ein Freund von dir entwickelt.

Die Hauptfigur des Spiels ist Annalyn, ein mutiges Mädchen mit einem treuen und furchtlosen Hund. Doch dann schlägt das Unglück zu: Ihre beste Freundin wurde entführt, während sie im Wald nach Beeren suchte.

Annalyn wird versuchen, ihre beste Freundin zu finden und zu befreien, wobei sie ihren Hund optional mit auf diese Quest nimmt.

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 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. Er braucht nämlich Zeit, um seine Rüstung anzulegen, und ist in dieser Zeit verwundbar.
  • Ausspionieren: Die Gruppe kann ausspioniert werden, wenn mindestens einer von ihnen wach ist. Andernfalls ist Ausspionieren reine Zeitverschwendung.
  • Gefangene signalisieren: Der Gefangenen kann mit Vogelrufen ein Signal gegeben werden, wenn die Gefangene wach ist und der Bogenschütze schläft. Bogenschützen sind nämlich im Signalgeben mit Vogelrufen ausgebildet und könnten die Nachricht abfangen.
  • Gefangene befreien: Annalyn kann versuchen, sich ins Lager zu schleichen, um die Gefangene zu befreien. Das ist riskant und kann nur auf zwei Wegen gelingen:
    • Wenn Annalyn ihren Hund dabeihat, kann sie die Gefangene befreien, 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 die Gefangene entkommen können.
    • Wenn Annalyn ihren Hund nicht dabeihat, müssen sie und die Gefangene sehr vorsichtig sein! Annalyn kann die Gefangene befreien, wenn die Gefangene wach ist und der Ritter und der Bogenschütze beide schlafen. Wenn die Gefangene aber schläft, kann sie nicht befreit werden: Die Gefangene würde durch Annalyns plötzliches Auftauchen erschrecken und den Ritter und den Bogenschützen aufwecken.

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

1. Prüfe, ob ein schneller Angriff ausgeführt werden kann

Implementiere die (statische) Methode QuestLogic.CanFastAttack(). Sie nimmt einen booleschen Wert entgegen, der angibt, ob der Ritter wach ist. Die Methode gibt true zurück, wenn aufgrund des Zustands des Ritters ein schneller Angriff möglich ist. Andernfalls gibt sie false zurück:

var knightIsAwake = true;
QuestLogic.CanFastAttack(knightIsAwake);
// => false

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

Implementiere die (statische) Methode QuestLogic.CanSpy(). Sie nimmt drei boolesche Werte entgegen, die angeben, ob der Ritter, der Bogenschütze bzw. die Gefangene wach sind. Die Methode gibt true zurück, wenn die Gruppe aufgrund des Zustands der drei Figuren ausspioniert werden kann. Andernfalls gibt sie false zurück:

var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
QuestLogic.CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

3. Prüfe, ob der Gefangenen ein Signal gegeben werden kann

Implementiere die (statische) Methode QuestLogic.CanSignalPrisoner(). Sie nimmt zwei boolesche Werte entgegen, die angeben, ob der Bogenschütze bzw. die Gefangene wach sind. Die Methode gibt true zurück, wenn der Gefangenen aufgrund des Zustands der beiden Figuren ein Signal gegeben werden kann. Andernfalls gibt sie false zurück:

var archerIsAwake = false;
var prisonerIsAwake = true;
QuestLogic.CanSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

4. Prüfe, ob die Gefangene befreit werden kann

Implementiere die (statische) Methode QuestLogic.CanFreePrisoner(). Sie nimmt vier boolesche Werte entgegen. Die ersten drei Parameter geben an, ob der Ritter, der Bogenschütze bzw. die Gefangene wach sind. Der letzte Parameter gibt an, ob Annalyns Hund dabei ist. Die Methode gibt true zurück, wenn die Gefangene aufgrund des Zustands der drei Figuren und der Anwesenheit von Annalyns Hund befreit werden kann. Andernfalls gibt sie false zurück:

var knightIsAwake = false;
var archerIsAwake = true;
var prisonerIsAwake = false;
var petDogIsPresent = false;
QuestLogic.CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent);
// => false
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
C# Exercism

Bereit, mit Annalyns Infiltration zu starten?

Melde dich bei Exercism an, um C# mit 62 Konzepte178 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.