update README
This commit is contained in:
17
README.md
17
README.md
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user