Files
blackjack/docs/class_tasks.md
2025-10-26 11:18:08 +01:00

3.4 KiB

🛠️ Detaillierte Aufgabenverteilung der Blackjack-Klassen

Diese Aufschlüsselung dient als erweiterter Bauplan für die Implementierung der einzelnen Klassen und ihrer Verantwortlichkeiten.


1. 🎴 Card (Karte)

Die Card-Klasse ist ein reiner Datenhalter und kennt nur ihren eigenen, festen Wert.

Attribut Aufgabe
rank (Rang) Speichert den Wert der Karte als Text ('2', '10', 'J', 'A').
suit (Farbe) Speichert die Farbe ('Herz', 'Pik', 'Kreuz', 'Karo').
value (Wert) Speichert den initialen numerischen Wert im Blackjack: J/Q/K sind 10, Ass ist 11.
__str__ Methode zur lesbaren Darstellung der Karte (z.B. "Dame von Kreuz").

2. 📦 Deck (Kartenstapel)

Die Deck-Klasse ist der Verwalter und die Quelle aller Karten.

Methode Aufgabe
Konstruktor Erzeugt alle 52 Card-Objekte (13 Ränge \times 4 Farben) und speichert sie in der internen Liste cards.
shuffle() Mischt die Reihenfolge der Card-Objekte in der internen Liste zufällig durch.
deal_card() Gibt die oberste (oder letzte) Card aus der Liste zurück und entfernt sie gleichzeitig aus dem Stapel.

3. Hand (Spielerhand)

Die Hand-Klasse ist der Kern der Blackjack-Regeln, da sie den Wert dynamisch anpasst.

Attribut/Methode Aufgabe
cards Liste der Card-Objekte, die aktuell in der Hand gehalten werden.
value Der aktuelle berechnete Blackjack-Wert der Hand.
aces Zähler für die Anzahl der Asse in der Hand.
add_card(card) Fügt die Karte zu cards hinzu, aktualisiert value und aces. Muss anschließend adjust_for_ace() aufrufen.
adjust_for_ace() Die Ass-Logik: Solange der Gesamtwert (value) über 21 ist UND Asse (aces > 0) vorhanden sind, reduziere value um 10 und aces um 1.

4. 🧑 Player & 🤵 Dealer (Akteure)

Diese Klassen stellen die interagierenden Teilnehmer dar. Dealer erbt die Basisfunktionen von Player.

Player

Attribut/Methode Aufgabe
chips Speichert das Guthaben des Spielers.
hand Enthält ein Hand-Objekt.
hit(deck) Zieht eine Karte vom Deck und fügt sie der eigenen Hand hinzu (self.hand.add_card(...)).
stand() Setzt einen Zustand (z.B. eine Eigenschaft $is\_standing$), um den Zug des Spielers zu beenden.

Dealer (erbt von Player)

Methode Aufgabe
play(deck) Führt die automatisierten Züge des Dealers durch: Ruft hit(deck) so lange auf, bis der Handwert 17 oder höher ist.

5. 🎮 Game (Spielsteuerung)

Die Game-Klasse ist der Orchestrator, der den Spielfluss, die Benutzerinteraktion und die Ergebnisverwaltung koordiniert.

Attribut/Methode Aufgabe
Konstruktor Erstellt die zentralen Komponenten: Deck, Player und Dealer.
play_round() Steuert den Rundenablauf: Mischen, Einsatz, Austeilen, Spielerzüge, Dealerzüge, Ergebnisauswertung.
show_cards() Zeigt die Hand des Spielers und die erste aufgedeckte Karte des Dealers an (bis der Vergleich erfolgt).
compare_hands() Bestimmt den Gewinner nach den Regeln (Blackjack, Bust, höherer Wert, Push) und passt die chips des Spielers entsprechend an.