update README

This commit is contained in:
2025-10-26 22:00:41 +01:00
parent 4a9b01582b
commit e8b2c772f3

View File

@@ -1,6 +1,7 @@
# Blackjack Game Design Document # Blackjack Game Design Document
## 1. Flowchart (Spielablauf) ## 1. Flowchart (Spielablauf)
```mermaid ```mermaid
flowchart TD flowchart TD
A([Start]) --> B[Deck erstellen und mischen] A([Start]) --> B[Deck erstellen und mischen]
@@ -29,6 +30,7 @@ flowchart TD
``` ```
## 2. UML-Klassendiagramm ## 2. UML-Klassendiagramm
```mermaid ```mermaid
classDiagram classDiagram
class Card { class Card {
@@ -86,6 +88,7 @@ classDiagram
## 3. Implementierungs-Roadmap mit Tests ## 3. Implementierungs-Roadmap mit Tests
### Phase 1: Grundstruktur ### Phase 1: Grundstruktur
- **Ziel:** Klassen anlegen, ohne Logik. - **Ziel:** Klassen anlegen, ohne Logik.
- Dateien: `card.py`, `deck.py`, `hand.py`, `player.py`, `dealer.py`, `game.py`, `main.py`. - Dateien: `card.py`, `deck.py`, `hand.py`, `player.py`, `dealer.py`, `game.py`, `main.py`.
- Methoden-Signaturen definieren. - Methoden-Signaturen definieren.
@@ -95,10 +98,12 @@ classDiagram
--- ---
### Phase 2: Card ### Phase 2: Card
- `__init__`: Speichert Rang, Farbe, Wert. - `__init__`: Speichert Rang, Farbe, Wert.
- `__str__`: Gibt z.B. "K♠" zurück. - `__str__`: Gibt z.B. "K♠" zurück.
**Test:** **Test:**
```python ```python
card = Card("A", "") card = Card("A", "")
print(card) # Erwartet: A♠ print(card) # Erwartet: A♠
@@ -107,43 +112,51 @@ print(card) # Erwartet: A♠
--- ---
### Phase 3: Deck ### Phase 3: Deck
- `__init__`: Erzeugt 52 Karten. - `__init__`: Erzeugt 52 Karten.
- `shuffle()`: Mischt die Karten. - `shuffle()`: Mischt die Karten.
- `deal_card()`: Gibt eine Karte zurück und entfernt sie. - `deal_card()`: Gibt eine Karte zurück und entfernt sie.
**Test:** **Test:**
- Prüfe, ob `len(deck.cards) == 52` nach Erstellung. - Prüfe, ob `len(deck.cards) == 52` nach Erstellung.
- Nach `deal_card()`: Länge = 51. - Nach `deal_card()`: Länge = 51.
--- ---
### Phase 4: Hand ### Phase 4: Hand
- `add_card(card)`: Fügt Karte hinzu. - `add_card(card)`: Fügt Karte hinzu.
- `calculate_value()`: Summiert Werte. - `calculate_value()`: Summiert Werte.
- `adjust_for_ace()`: Reduziert Ass von 11 auf 1, wenn nötig. - `adjust_for_ace()`: Reduziert Ass von 11 auf 1, wenn nötig.
**Test:** **Test:**
- Hand mit Ass + 9 → Wert = 20. - Hand mit Ass + 9 → Wert = 20.
- Hand mit Ass + 9 + 5 → Wert = 15. - Hand mit Ass + 9 + 5 → Wert = 15.
--- ---
### Phase 5: Player & Dealer ### Phase 5: Player & Dealer
- `Player.hit(deck)`: Karte ziehen. - `Player.hit(deck)`: Karte ziehen.
- `Dealer.play(deck)`: Zieht bis Wert ≥ 17. - `Dealer.play(deck)`: Zieht bis Wert ≥ 17.
**Test:** **Test:**
- Spieler zieht Karte → Handgröße +1. - Spieler zieht Karte → Handgröße +1.
- Dealer zieht automatisch bis ≥ 17. - Dealer zieht automatisch bis ≥ 17.
--- ---
### Phase 6: Game ### Phase 6: Game
- `play_round()`: Ablauf wie im Flowchart. - `play_round()`: Ablauf wie im Flowchart.
- `compare_hands()`: Gewinner bestimmen. - `compare_hands()`: Gewinner bestimmen.
- `show_cards()`: Karten anzeigen. - `show_cards()`: Karten anzeigen.
**Test:** **Test:**
- Simuliere eine Runde: - Simuliere eine Runde:
- Spieler steht sofort. - Spieler steht sofort.
- Dealer spielt. - Dealer spielt.
@@ -152,17 +165,20 @@ print(card) # Erwartet: A♠
--- ---
### Phase 7: Erweiterungen ### Phase 7: Erweiterungen
- Chips & Einsätze. - Chips & Einsätze.
- Mehrere Spieler. - Mehrere Spieler.
- Features wie Split, Double Down. - Features wie Split, Double Down.
**Test:** **Test:**
- Chips reduzieren sich nach Einsatz. - Chips reduzieren sich nach Einsatz.
- Gewinn/Verlust korrekt berechnet. - Gewinn/Verlust korrekt berechnet.
--- ---
### Teststrategie ### Teststrategie
- **Unit-Tests** für jede Klasse (z.B. mit `pytest`). - **Unit-Tests** für jede Klasse (z.B. mit `pytest`).
- **Integrationstest**: Komplette Runde simulieren. - **Integrationstest**: Komplette Runde simulieren.
- **Edge Cases**: - **Edge Cases**:
@@ -170,7 +186,6 @@ print(card) # Erwartet: A♠
- Spieler oder Dealer hat Blackjack. - Spieler oder Dealer hat Blackjack.
- Beide haben denselben Wert. - Beide haben denselben Wert.
### Projektstruktur für OOP-Blackjack ### Projektstruktur für OOP-Blackjack
```plaintext ```plaintext