101 lines
4.3 KiB
Python
101 lines
4.3 KiB
Python
"""
|
||
Kapitel 03: Methoden & Verhalten – Helden-Duell
|
||
==============================================
|
||
|
||
In dieser Aufgabe programmierst du eine Klasse 'Held' für ein Rollenspiel.
|
||
"""
|
||
|
||
class Held:
|
||
# ==========================================================================
|
||
# TODO 1: Konstruktor __init__(self, name, leben=100, angriffskraft=15)
|
||
# Speichere:
|
||
# - self.name = name
|
||
# - self.leben = leben
|
||
# - self.max_leben = leben (das maximale Leben entspricht dem Startleben)
|
||
# - self.angriffskraft = angriffskraft
|
||
# - self.ist_am_leben = True
|
||
# ==========================================================================
|
||
def __init__(self, name, leben=100, angriffskraft=15):
|
||
# Schreibe hier deinen Code für TODO 1:
|
||
pass
|
||
|
||
# ==========================================================================
|
||
# TODO 2: Methode "schaden_erleiden(self, schaden)"
|
||
# Regeln:
|
||
# 1. Wenn der Held bereits besiegt ist (not self.ist_am_leben) oder schaden <= 0:
|
||
# - Es passiert nichts, gib 0 zurück.
|
||
# 2. Ziehe 'schaden' von 'self.leben' ab.
|
||
# 3. Wenn 'self.leben' <= 0 wird:
|
||
# - Setze 'self.leben' genau auf 0.
|
||
# - Setze 'self.ist_am_leben' auf False.
|
||
# 4. Gib den erlittenen Schaden (int/float) zurück.
|
||
# ==========================================================================
|
||
def schaden_erleiden(self, schaden):
|
||
# Schreibe hier deinen Code für TODO 2:
|
||
pass
|
||
|
||
# ==========================================================================
|
||
# TODO 3: Methode "heilen(self, heilung)"
|
||
# Regeln:
|
||
# 1. Wenn der Held besiegt ist (not self.ist_am_leben) oder heilung <= 0:
|
||
# - Tote Helden können nicht geheilt werden! Gib 0 zurück.
|
||
# 2. Erhöhe das Leben um 'heilung', aber ACHTUNG:
|
||
# - 'self.leben' darf niemals größer als 'self.max_leben' werden!
|
||
# - Beispiel: Wenn leben=90, max_leben=100 und heilung=20:
|
||
# Das Leben wird 100 (nicht 110) und die tatsächliche Heilung war 10.
|
||
# 3. Gib die tatsächlich geheilte Menge an Lebenspunkten zurück.
|
||
# ==========================================================================
|
||
def heilen(self, heilung):
|
||
# Schreibe hier deinen Code für TODO 3:
|
||
pass
|
||
|
||
# ==========================================================================
|
||
# TODO 4: Methode "angreifen(self, gegner)"
|
||
# Parameter 'gegner' ist ein anderes Held-Objekt!
|
||
# Regeln:
|
||
# 1. Prüfe, ob BEIDE Helden noch am Leben sind (self.ist_am_leben und gegner.ist_am_leben).
|
||
# 2. Wenn ja:
|
||
# - Rufe auf dem 'gegner' die Methode 'schaden_erleiden' auf mit self.angriffskraft als Wert.
|
||
# - Gib True zurück.
|
||
# 3. Wenn einer von beiden (oder beide) nicht mehr am Leben ist:
|
||
# - Greife nicht an und gib False zurück.
|
||
# ==========================================================================
|
||
def angreifen(self, gegner):
|
||
# Schreibe hier deinen Code für TODO 4:
|
||
pass
|
||
|
||
# ==========================================================================
|
||
# TODO 5: Methode "status_text(self)"
|
||
# Gibt einen formatierten String zurück:
|
||
# Wenn am Leben:
|
||
# "[{self.name}] HP: {self.leben}/{self.max_leben} | Kraft: {self.angriffskraft} | Status: Lebendig"
|
||
# Wenn besiegt:
|
||
# "[{self.name}] HP: 0/{self.max_leben} | Kraft: {self.angriffskraft} | Status: Besiegt"
|
||
# ==========================================================================
|
||
def status_text(self):
|
||
# Schreibe hier deinen Code für TODO 5:
|
||
pass
|
||
|
||
|
||
# ==============================================================================
|
||
# Kampfsimulator zum Ausprobieren:
|
||
# ==============================================================================
|
||
if __name__ == "__main__":
|
||
print("⚔️ --- ARENA DER HELDEN --- ⚔️")
|
||
ritter = Held("Arthur", leben=80, angriffskraft=20)
|
||
drache = Held("Feuerspei", leben=120, angriffskraft=25)
|
||
|
||
print(ritter.status_text())
|
||
print(drache.status_text())
|
||
|
||
print("\n--- Runde 1 ---")
|
||
ritter.angreifen(drache)
|
||
print(drache.status_text())
|
||
|
||
drache.angreifen(ritter)
|
||
print(ritter.status_text())
|
||
|
||
print("\n--- Arthur trinkt einen Heiltrank ---")
|
||
geheilt = ritter.heilen(15)
|
||
print(f"Arthur heilt sich um {geheilt} HP!")
|
||
print(ritter.status_text())
|