""" Kapitel 06: Abschlussprojekt – Tamagotchi (Virtuelles Haustier) ============================================================== Programmiere hier die Klasse 'Tamagotchi'. """ class Tamagotchi: # ========================================================================== # TODO 1: Konstruktor __init__(self, name, tierart="Drache") # # Initialisiere die folgenden Attribute an self: # - self.name = name # - self.tierart = tierart # - self.hunger = 50 (0 = pappsatt, 100 = verhungert) # - self.muedigkeit = 20 (0 = fit, 100 = erschöpft) # - self.glueck = 80 (0 = traurig, 100 = super glücklich) # - self.alter_tage = 0 # - self.ist_lebendig = True # ========================================================================== def __init__(self, name, tierart="Drache"): # Schreibe hier deinen Code für TODO 1: pass # Hilfsmethode: Begrenzt Werte immer zwischen min_wert (0) und max_wert (100) def _begrenze(self, wert, min_wert=0, max_wert=100): return max(min_wert, min(max_wert, wert)) # ========================================================================== # TODO 2: Methode "fuettern(self, menge=20)" # # Regeln: # 1. Wenn not self.ist_lebendig: # - Gib zurück: f"{self.name} reagiert nicht mehr..." # 2. Wenn lebendig: # - Verringere self.hunger um menge (mit _begrenze, darf nicht unter 0 fallen). # - Erhöhe self.glueck um 5 (max 100). # - Erhöhe self.muedigkeit um 5 (max 100). # - Gib zurück: f"{self.name} mampft genüsslich! (Hunger: {self.hunger}/100)" # ========================================================================== def fuettern(self, menge=20): # Schreibe hier deinen Code für TODO 2: pass # ========================================================================== # TODO 3: Methode "spielen(self, spass=25)" # # Regeln: # 1. Wenn not self.ist_lebendig: # - Gib zurück: f"{self.name} reagiert nicht mehr..." # 2. Wenn self.muedigkeit > 80 ist: # - Zu müde zum Spielen! Ändere keine Werte und gib zurück: # f"{self.name} ist zu müde zum Spielen und gähnt nur..." # 3. Wenn fit genug: # - Erhöhe self.glueck um spass (max 100). # - Erhöhe self.hunger um 15 (max 100). # - Erhöhe self.muedigkeit um 20 (max 100). # - Gib zurück: f"{self.name} hatte riesigen Spaß beim Spielen! (Glück: {self.glueck}/100)" # ========================================================================== def spielen(self, spass=25): # Schreibe hier deinen Code für TODO 3: pass # ========================================================================== # TODO 4: Methode "schlafen(self)" # # Regeln: # 1. Wenn not self.ist_lebendig: # - Gib zurück: f"{self.name} reagiert nicht mehr..." # 2. Wenn lebendig: # - Setze self.muedigkeit auf 0. # - Erhöhe self.hunger um 15 (max 100). # - Erhöhe self.alter_tage um 1. # - Gib zurück: f"{self.name} hat tief geschlafen und ist ausgeruht! Ein neuer Tag bricht an." # ========================================================================== def schlafen(self): # Schreibe hier deinen Code für TODO 4: pass # ========================================================================== # TODO 5: Methode "zeit_vergeht(self)" # Simuliert das Verstreichen von Zeit. # # Regeln: # 1. Wenn not self.ist_lebendig: # - Mach nichts, gib False zurück. # 2. Wenn lebendig: # - Erhöhe self.hunger um 10 (max 100). # - Erhöhe self.muedigkeit um 10 (max 100). # - Verringere self.glueck um 10 (min 0). # - Prüfe, ob das Haustier stirbt: # Wenn self.hunger >= 100 oder self.glueck <= 0: # self.ist_lebendig = False # - Gib self.ist_lebendig zurück (True wenn noch am Leben, False wenn gestorben). # ========================================================================== def zeit_vergeht(self): # Schreibe hier deinen Code für TODO 5: pass # ========================================================================== # TODO 6: Dunder-Methode "__str__(self)" # Gibt eine hübsche Statusübersicht als mehrzeiligen String zurück. # # Format (wenn lebendig): # "=== {self.name} ({self.tierart}, {self.alter_tage} Tage alt) ===\n" # "Hunger: {self.hunger}/100\n" # "Müdigkeit: {self.muedigkeit}/100\n" # "Glück: {self.glueck}/100" # # Format (wenn tot / not self.ist_lebendig): # "=== {self.name} ({self.tierart}) - RIP 🪦 ===" # ========================================================================== def __str__(self): # Schreibe hier deinen Code für TODO 6: pass # ============================================================================== # Schneller Testlauf: # (Ausführen mit 'python3 aufgabe.py' oder starte 'python3 tamagotchi_spiel.py') # ============================================================================== if __name__ == "__main__": pet = Tamagotchi("Yoshi", "Dino") if hasattr(pet, "name") and pet.name: print(pet) print() print(pet.fuettern()) print(pet.spielen()) print(pet.schlafen()) print(pet) else: print("💡 Hinweis: Implementiere erst die TODOs, um Yoshi zum Leben zu erwecken!")