In dieser Aufgaben sollen Sie ihrem Traum, ein Gamedeveloper zu werden, noch einen weiteren Schritt näher kommen!
Erstellen Sie eine Klasse Skill
. Diese soll als Attribute name
(str), type
(str), power_scaling
(float) und mana_cost
(int) haben:
type
: Typ des Skills. Z.b. “Sorcerie” für magische Attacken, “Miracle” für heilende Skills und “Physical” für Bonk-Attacken.
(Bonus: Wenn Sie mit Enum
vertraut sind, dann erstellen Sie für type
gerne ein passendes Enum
(siehe Aufgabe “Und Sie dachten, Sie seien fertig”))power_scaling
: Gibt den Faktor an, mit den ein Skill Schaden/Heilung verursacht, basierend auf die power
des Players/Monsters.mana_cost
: Mana-Kosten des Skills. Diese kann auch 0 sein, z.B. für Basic-Skills des Typs “Physical”.Erstellen Sie eine Klasse AdvancedPlayer
, welche von Ihrer alten Klassen Player
erbt. Diese soll die Klasse Player
um folgende weitere Attribute ergänzen:
skill_set
(list[skill]): Gibt eine Liste an, welche alle Skills des Players enthält.max_health
(int): Gibt an, wie viel Leben der Player maximal haben kann.mana
(int): Gibt an, wie viel Mana der Player noch hat.max_mana
(int): Gibt an, wie viel Mana der Player maximal haben kann.Sowie um folgende Methoden:
get_damage(damage: int)
: Überschreiben Sie diese Methode aus Player
, sodass man sich nicht mehr over-healen kann (Also über das max_health
hinaus heilen). Bug fixing!use_mana(mana: int)
: Zieht dem Player Mana ab, bzw. fügt dem Player mana
hinzu, falls mana
negativ. Zu jedem Zeitpunkt soll 0 <= mana
<= max_mana
gelten.level_up()
: Überschreiben Sie diese Methode aus Player
, sodass man sich nun entscheiden kann, ob man max_health
, power
oder max_mana
verbessern möchte.add_skill(new_skill: Skill)
: Fügt dem Player einen neuen Skill im skill_set
hinzu! Yeay!Erstellen Sie eine Klasse AdvancedMonster
, welche von Ihrer Klasse AdvancedPlayer
erbt. Diese soll um folgende Attribute ergänzt werden:
type
(str): Gibt den Typ des Monstern an, z.B. “Common” für gewöhnliche Monster und “Boss” für Bosse.
(Bonus: Wenn Sie mit Enum
vertraut sind, dann erstellen Sie für type
gerne ein passendes Enum
(siehe Aufgabe “Und Sie dachten, Sie seien fertig”))Sowie um folgende Methoden:
calculate_turn
(-> Skill): Berechnet (entweder zufällig oder auf schlauer Art und Weise), welchen Skill aus skill_set
das Monster als Nächstes nutzt. Das ist quasi die KI des Monsters :D. Achten Sie auf Mana-Kosten!Werden Sie nun kreativ und machen Sie daraus, wie in der Doom-Aufgabe, ein kleines Videospiel in der Konsole.
Sie könnten diesmal am Anfang dem Player eine Klasse auswählen lassen. Basierend auf diese Klasse, startet der Player mit einem bestimmten skill_set
, Ideen für Klassen:
Während Kämpfen, kann sich der Player dann aussuchen, welche Skills aus skill_set
verwendet werden sollen etc. Hier und da könnte der Player dann auf Bosse treffen, welche dem Spieler bei einem Sieg mit einem neuen Skill lohnen. Werden Sie kreativ!