DOOM

Aufgabe

In dieser Aufgaben sollen Sie ihrem Traum, ein Gamedeveloper zu werden, einen Schritt näher kommen!

1.

Erstellen Sie eine Klasse Player. Diese soll als Attribute name: str, level: int, health: int und power: int haben. Spieler sollen beim Erstellen mit einem Level, drei Health und ein Power starten. Desweiteren soll diese Klasse zwei Methoden implementieren:

  • receive_damage(damage): Reduziert health des Spielers um den Parameter damage, bzw. erhöht health falls damage negativ.
  • level_up(): Der Spieler bekommt ein Level-Up. Sie können sich selbst aussuchen, was dabei passiert!

2.

Erstellen Sie eine Klasse Monster. Diese soll als Attribute name: str, health: int und power: int haben. Sie dürfen sich aussuchen, mit welchen Standardwerten ihre Monster starten! Desweiteren soll diese Klasse zwei Methoden implementieren:

  • receive_damage(damage): Reduziert health des Monsters um den Parameter damage, bzw. erhöht health falls damage negativ.
  • rage(wahrheitswert) Falls True, gerät das Monster in Rage und seine power verdoppelt sich! Sonst wird power auf den ursprünglichen Wert zurückgesetzt.

Um bestimmtes Verhalten umzusetzen, benötigen Ihre Klassen ggf. weitere Attribute.

Bonus (kniffilig)

Werden Sie nun kreativ und machen Sie daraus ein kleines Videospiel in der Konsole, das Spiel könnte z.B. so starten… (kein funktionierender Code, nur Beispiel):

import random

def main():
    # Erstelle einen Spieler und ein Monster
    spieler = player(f"dieletztelebendekiwi")
    gegner  = monster(f"kiwiterminator")

    # Lasse Sie kämpfen. Falls Funktion True zurückgibt, hat man gewonnen. Sonst verloren.
    if kampf(spieler, gegner):
        print(f"Du hast {gegner.name} besiegt und bekommst ein level-up!")
        spieler.levelup()
    else:
        print(f"Du bist an {gegner.name} gestorben. Git Gud.")

def kampf(spieler: player, gegner: monster)-> bool:
    print(f"Achtung {spieler.name}, ein wildes {gegner.name} ist aufgetaucht!")
    entscheidung = input(f"Möchtest du kämpfen, oder dich wie eine feiges Huhn verhalten und abhauen?: kämpfen/abhauen")

    if(entscheidung == "kämpfen"):
        # Wiederhole Kampf bis einer nachgibt
        while(True):
            print(f"Es wird gekämpft!")
            gegner.receive_damage(spieler.power + random.randint(0, 3))

            if(gegner.health <= 0):
                return True

            if(gegner.health == 1):
                print(f"Der Gegner wurde stärker, weil er kurz vor dem Sterben ist. Anime-logik!")
                gegner.rage(true)

            spieler.receive_damage(gegner.power + random.randint(0, 2))

            if(spieler.health <= 0):
                return False
            ...
    else:
        ...

if __name__ == "__main__":
    main()