133 lines
5.8 KiB
HTML
133 lines
5.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Kapitel 06: Tamagotchi Abschlussprojekt</title>
|
|
<link rel="stylesheet" href="../assets/style.css">
|
|
</head>
|
|
<body>
|
|
|
|
<header>
|
|
<div class="header-container">
|
|
<nav class="nav-links">
|
|
<a href="../index.html">🏠 Zur Kursübersicht</a>
|
|
<span>›</span>
|
|
<a href="../05_objekte_kombinieren/index.html">Kapitel 05</a>
|
|
<span>›</span>
|
|
<span style="color: white; font-weight: 600;">Kapitel 06</span>
|
|
</nav>
|
|
<div class="header-badge">Abschlussprojekt</div>
|
|
<h1>Dein eigenes Tamagotchi (Virtuelles Haustier) 🥚🐣</h1>
|
|
<p>Kombiniere alle Konzepte in einem interaktiven, voll funktionsfähigen Konsolenspiel!</p>
|
|
</div>
|
|
</header>
|
|
|
|
<main class="container">
|
|
|
|
<!-- Übersicht Card -->
|
|
<section class="card">
|
|
<h2>1. Das große Finale! 🏆</h2>
|
|
|
|
<p>
|
|
Du hast alle Grundlagen gelernt: Klassen definieren, <code>__init__</code> & <code>self</code> nutzen, Methoden schreiben, <code>__str__</code> gestalten und Objekte verwalten.
|
|
</p>
|
|
<p>
|
|
Jetzt bauen wir ein komplettes, lebendiges <strong>Tamagotchi</strong>, das du im Terminal füttern, schlafen legen und mit dem du spielen kannst!
|
|
</p>
|
|
|
|
<div class="box box-analogie">
|
|
<div class="box-title">🎮 Wie das Spiel funktioniert:</div>
|
|
<ul style="margin-left: 20px;">
|
|
<li>🍖 <strong>Hunger</strong> (0 bis 100): Steigt mit der Zeit, sinkt beim Füttern. Bei 100 stirbt das Haustier!</li>
|
|
<li>💤 <strong>Müdigkeit</strong> (0 bis 100): Steigt bei Aktionen. Bei über 80 weigert es sich zu spielen. Schlafen setzt Müdigkeit auf 0.</li>
|
|
<li>💖 <strong>Glück</strong> (0 bis 100): Steigt beim Spielen, sinkt mit der Zeit. Bei 0 stirbt das Haustier vor Einsamkeit.</li>
|
|
<li>📅 <strong>Alter</strong>: Bei jedem Schlafen vergeht ein neuer Tag (<code>alter_tage += 1</code>).</li>
|
|
</ul>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Aufgaben Card -->
|
|
<section class="card">
|
|
<h2>2. Deine Aufgaben in <code>aufgabe.py</code></h2>
|
|
|
|
<ul class="task-list">
|
|
<li class="task-item">
|
|
<input type="checkbox" class="task-checkbox" id="t6_1">
|
|
<label for="t6_1" class="task-label">
|
|
<strong>TODO 1:</strong> Konstruktor <code>__init__(self, name, tierart="Drache")</code>: Startwerte <code>hunger=50</code>, <code>muedigkeit=20</code>, <code>glueck=80</code>, <code>alter_tage=0</code>, <code>ist_lebendig=True</code>.
|
|
</label>
|
|
</li>
|
|
<li class="task-item">
|
|
<input type="checkbox" class="task-checkbox" id="t6_2">
|
|
<label for="t6_2" class="task-label">
|
|
<strong>TODO 2:</strong> Methode <code>fuettern(self, menge=20)</code>: Senkt Hunger, erhöht Glück & Müdigkeit um 5.
|
|
</label>
|
|
</li>
|
|
<li class="task-item">
|
|
<input type="checkbox" class="task-checkbox" id="t6_3">
|
|
<label for="t6_3" class="task-label">
|
|
<strong>TODO 3:</strong> Methode <code>spielen(self, spass=25)</code>: Steigert Glück, erhöht Hunger (15) & Müdigkeit (20). Wenn <code>muedigkeit > 80</code> -> ablehnen!
|
|
</label>
|
|
</li>
|
|
<li class="task-item">
|
|
<input type="checkbox" class="task-checkbox" id="t6_4">
|
|
<label for="t6_4" class="task-label">
|
|
<strong>TODO 4:</strong> Methode <code>schlafen(self)</code>: Müdigkeit auf 0, Hunger +15, <code>alter_tage += 1</code>.
|
|
</label>
|
|
</li>
|
|
<li class="task-item">
|
|
<input type="checkbox" class="task-checkbox" id="t6_5">
|
|
<label for="t6_5" class="task-label">
|
|
<strong>TODO 5:</strong> Methode <code>zeit_vergeht(self)</code>: Hunger +10, Müdigkeit +10, Glück -10. Prüfen, ob Hunger >= 100 oder Glück <= 0.
|
|
</label>
|
|
</li>
|
|
<li class="task-item">
|
|
<input type="checkbox" class="task-checkbox" id="t6_6">
|
|
<label for="t6_6" class="task-label">
|
|
<strong>TODO 6:</strong> Dunder-Methode <code>__str__(self)</code>: Statusanzeige mit Name, Tierart, Alter und Werten.
|
|
</label>
|
|
</li>
|
|
</ul>
|
|
|
|
<h3>💡 Lösungshinweise (Aufklappen bei Bedarf)</h3>
|
|
|
|
<details>
|
|
<summary>Tipp zur Werte-Begrenzung (Clamping)</summary>
|
|
<div class="details-content">
|
|
<p>Damit Werte nicht negativ werden oder 100 überschreiten, kannst du die Hilfsfunktion <code>max(0, min(100, wert))</code> nutzen:</p>
|
|
<div class="code-container">
|
|
<pre><span class="var">self</span>.<span class="attr">hunger</span> = <span class="fn">max</span>(<span class="num">0</span>, <span class="fn">min</span>(<span class="num">100</span>, <span class="var">self</span>.<span class="attr">hunger</span> - <span class="var">menge</span>))</pre>
|
|
</div>
|
|
</div>
|
|
</details>
|
|
</section>
|
|
|
|
<!-- Spiel starten Card -->
|
|
<section class="card">
|
|
<h2>3. Das interaktive Spiel starten! 🕹️</h2>
|
|
|
|
<p>Sobald deine Tests grün sind, kannst du das Spiel live spielen:</p>
|
|
|
|
<div class="code-container">
|
|
<div class="code-header">
|
|
<span>Terminal</span>
|
|
</div>
|
|
<pre><code>python3 tamagotchi_spiel.py</code></pre>
|
|
</div>
|
|
|
|
<div class="box box-success">
|
|
<div class="box-title">🎉 Geschafft!</div>
|
|
Du hast damit erfolgreich gelernt, wie man objektorientiert in Python programmiert!
|
|
</div>
|
|
|
|
<div class="footer-nav">
|
|
<a href="../05_objekte_kombinieren/index.html" class="btn btn-secondary">← Zurück zu Kapitel 05</a>
|
|
<a href="../index.html" class="btn">Zurück zur Hauptübersicht 🏠</a>
|
|
</div>
|
|
</section>
|
|
|
|
</main>
|
|
|
|
</body>
|
|
</html>
|