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!