Zum Hauptinhalt springen

Aufgabe 16

Schwierigkeitsgrad: Schwer
Themen: Programmausgabe Kontollstrukturen Objektorientierung Arrays

a) Erstellen Sie eine Klasse Zauberer. Ein Zauberer hat einen Namen, Lebenspunkte, mehere Zauber und die Anzahl der Zauber. Erstellen Sie auch eine Klasse für die Zauber mit ihrem Namen und ihrer Stärke. Implementieren Sie für beide Klassen notwendige Konstruktoren, um Instanzen erstellen und löschen zu können und eine Methode um, diese im Terminal ausgeben zu können.

info

Hinweis: Die Syntax für die Ausgabe könnte so aussehen:

 friend ostream &operator<<(ostream &out, const Wizard &wizard)
{
out << "Ich bin ein Zauberer!"
return;
}

Testen Sie Ihre Implementation mithilfe folgender Main-Funktion:

int main()
{
Spell *spells = new Spell[3];
spells[0] = Spell("Fireball", 50);
spells[1] = Spell("Lightning Bolt", 60);
spells[2] = Spell("Ice Shard", 40);

Wizard wizard("Elemental Mage", 100, spells, 3);
cout << wizard << endl;
}

b) Implementieren Sie eine Methode void attack(Wizard &target, int spell_index), mit der andere Zauberer mit einem bestimmten Zauber angegriffen werden können. Implementieren Sie auch eine Kampffunktion, in der sich beide Zauberer, bis Sie keine LebensPunkte mehr haben, im Wechsel angreifen. Lassen Sie die Zauberer dabei jede Runde einen anderen ihrer Zauber benutzen.

Testen Sie Ihre Implementation mithilfe folgender Main-Funktion:

int main()
{
Spell *spells = new Spell[3];
spells[0] = Spell("Fireball", 50);
spells[1] = Spell("Lightning Bolt", 60);
spells[2] = Spell("Ice Shard", 40);

Wizard wizard("Elemental Mage", 100, spells, 3);
cout << wizard << endl;

Spell *enemySpells = new Spell[2];
enemySpells[0] = Spell("Shadow Strike", 30);
enemySpells[1] = Spell("Dark Blast", 45);
Wizard enemyWizard("Dark Sorcerer", 80, enemySpells, 2);
cout << enemyWizard << endl;

fight(wizard, enemyWizard);
}