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 momentan hat.max_mana: int
: Gibt an, wie viel Mana der Player maximal haben kann.Sowie um folgende Methoden:
receive_damage(damage: int)
: Überschreiben Sie diese Methode aus Player
, sodass man sich nicht mehr over-healen kann, zu jedem Zeitpunkt soll also 0 <= health
<= max_health
gelten… Bug fixing!use_mana(amount: int)
: Reduziert mana
des Spielers um den Parameter amount
, bzw. erhöht mana
falls amount
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. Außerdem sollen health
und mana
des Spielers aufgefüllt werden.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!