Kapitel 03

Methoden & Verhalten: Wenn Objekte lebendig werden ⚔️

Lass Objekte aktiv handeln und miteinander interagieren in einem rundenbasierten RPG-Heldenduell.

1. Was sind Methoden?

Bisher haben unsere Klassen vor allem Daten gespeichert. Aber in der objektorientierten Programmierung haben Objekte auch Verhalten. Funktionen, die zu einer Klasse gehören, nennt man Methoden.

Python
class Zauberer:
    def __init__(self, name, mana=50):
        self.name = name
        self.mana = mana

    # Eine Methode gehört dem Zauberer:
    def zauberspruch_wirken(self, kosten):
        if self.mana >= kosten:
            self.mana -= kosten
            return True
        return False

2. Wenn zwei Objekte miteinander interagieren

Besonders spannend wird es, wenn eine Methode eines Objekts ein anderes Objekt als Parameter bekommt (z.B. ritter.angreifen(drache)).

🤝 Die Duell-Analogie:
In angreifen(self, gegner) ist self der Angreifer (z.B. Arthur) und gegner ist das Ziel (z.B. der Drache). Arthur ruft gegner.schaden_erleiden(self.angriffskraft) auf. So beeinflussen sich die Objekte gegenseitig!
⚠️ Wichtig: Logische Grenzen einhalten (Clamping)!
Lebenspunkte dürfen niemals unter 0 fallen (ein besiegter Held hat 0 HP, nicht -15 HP) und bei Heilung niemals über max_leben steigen.

3. Deine Aufgaben in aufgabe.py

💡 Lösungshinweise (Aufklappen bei Bedarf)

Tipp zu TODO 3 (Heilung begrenzen)
def heilen(self, heilung):
    if not self.ist_am_leben or heilung <= 0:
        return 0
    alter_wert = self.leben
    self.leben = min(self.max_leben, self.leben + heilung)
    return self.leben - alter_wert  # Wie viel wurde wirklich geheilt?

4. Lösung überprüfen

Führe im Terminal im Ordner 03_methoden_und_verhalten folgenden Befehl aus:

Terminal
python3 test_aufgabe.py