Turn Based Dark Souls
Diese Aufgabe wurde durch ein Studi inspiriert, welcher die Doom Aufgabe (100P/Klassen) zu galaktischen Höhen katepultiert hatte!
Diese Aufgabe ist einer Erweiterung der Doom Aufgabe (100P/Klassen).
Aufgabe
In dieser Aufgaben sollen Sie ihrem Traum, ein Gamedeveloper zu werden, noch einen weiteren Schritt näher kommen!
1.
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 mitEnumvertraut sind, dann erstellen Sie fürtypegerne ein passendesEnum(siehe Aufgabe “Und Sie dachten, Sie seien fertig”))power_scaling: Gibt den Faktor an, mit den ein Skill Schaden/Heilung verursacht, basierend auf diepowerdes Players/Monsters.mana_cost: Mana-Kosten des Skills. Diese kann auch 0 sein, z.B. für Basic-Skills des Typs “Physical”.
2.
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 ausPlayer, sodass man sich nicht mehr over-healen kann, zu jedem Zeitpunkt soll also 0 <=health<=max_healthgelten… Bug fixing!use_mana(amount: int): Reduziertmanades Spielers um den Parameteramount, bzw. erhöhtmanafallsamountnegativ. Zu jedem Zeitpunkt soll 0 <=mana<=max_managelten.level_up(): Überschreiben Sie diese Methode ausPlayer, sodass man sich nun entscheiden kann, ob manmax_health,powerodermax_manaverbessern möchte. Außerdem sollenhealthundmanades Spielers aufgefüllt werden.add_skill(new_skill: Skill): Fügt dem Player einen neuen Skill imskill_sethinzu! Yeay!
3.
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 mitEnumvertraut sind, dann erstellen Sie fürtypegerne ein passendesEnum(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 ausskill_setdas Monster als Nächstes nutzt. Das ist quasi die KI des Monsters :D. Achten Sie auf Mana-Kosten!
Bonus
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:
- “Sorcerer”: Startet mit einem schlechten Physical-Skill sowie zwei sehr starken Sorcerie-Skills. Der Player braucht hier gutes Mana-Management.
- “Knight”: Startet mit zwei sehr guten Physical-Skills und einem schwachen Miracle Skills. Bonk, Bonk und noch mal Bonk!
- “Cleric” Startet mit einem guten Physical-Skill, sowie zwei starken Miracle Skills. Heilt sich durch das ganze Game durch.
- “Deprived”: Startet nur mit einem schlechten Physical-Skill! Die wahre Dark Souls experience!
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!