2.3 KiB
Übungsaufgabe 1: Zauberschule
Einführung
Stell dir vor, du arbeitest an einem System zur Klassifizierung und Verwaltung von magischen Wesen in einer Zauberschule. Dein Ziel ist es, verschiedene Arten von magischen Wesen zu modellieren, ihre magische Stärke zu berechnen und Kämpfe zwischen ihnen zu simulieren.
Aufgaben
1. Definition der magischen Wesen
Definiere einen Datentyp MagicalCreature
, der verschiedene magische Wesen beschreibt. In der Zauberschule gibt es Drachen (Dragon), Einhörner (Unicorn), und Zauberer (Wizard).
Jede Kreatur hat:
- einen Namen name (String)
- ein Magielevel level (Int)
- Erfahrungspunkte experience (Int)
Kannst du Type- und Value-Konstruktor identifizieren?
2. Beschreibung der magischen Wesen
Erstelle eine Funktion describeMagicalCreature
, die eine MagicalCreature entgegen nimmt und eine stringbasierte Beschreibung des Wesens zurückgibt.
Beispielausgabe: "Dumbledore ist ein Zauberer mit Magielevel 13 und 70 Erfahrungspunkten." Hinweis: Stelle sicher, dass die Werte des Datentyps in Zeichenketten umgewandelt werden können.
3. Kräfte
Zwei Kreaturen können gegeneinander kämpfen. Manchmal sind auch Gäste aus anderen Welten zu Besuch an der Schule, die selbst keine MagicalCreatures sind, sich aber trotzdem gerne an den Kämpfen beteiligen möchten (Roboter, Schwertkämpfer, etc.).
Deshalb soll eine Typklasse Fighter
erstellt werden. Alle Instanzen der Typklasse müssen eine Methode power
implementieren, die die Kraft der Fighter als Int zurückgibt. MagicalCreatures sollen eine Instanz dieser Typklasse sein. Die Power wird basierend auf dem Magielevel, Erfahrungswerten und dem Wesenstyp berechnet:
- Dragon: (Magielevel + Erfahrung) * 3
- Unicorn: (Magielevel + Erfahrung) * 4
- Wizard: (Magielevel + Erfahrung) * 5
4. Magisches Duell
Erstelle eine Funktion duel
, die zwei Fighter gegeneinander antreten lässt. Die Kämpferin oder der Kämpfer mit der höheren Power gewinnt und soll zurückgegeben werden. Falls das Duell unentschieden ausgeht, soll ein String "Unentschieden" zurückgegeben werden.
Hinweis: Die Typklasse Either könnte für die Rückgabe hilfreich sein.
Ausführen und Testen
Kompiliere den Code, führe das Programm aus und überprüfe die Ausgaben.