Aufgaben-Python/03_methoden_und_verhalten/aufgabe.py

101 lines
4.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
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())