Constructor
new TemplateGameLogic()
- Description:
✅ ERFORDERLICH: Konstruktor Initialisiert das Spiel in den Startzustand.
- Source:
Methods
_checkGameEnd()
- Description:
Hilfsfunktion: Prüfe auf Spielende. Wird nach jedem Zug aufgerufen. Setzt: this.winner, this.isGameOver
- Source:
_isMoveInList(move, validMoves) → {boolean}
- Description:
Hilfsfunktion: Prüft, ob ein Zug in der Züge-Liste enthalten ist. Wird für Validierung benötigt.
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
move |
number | Object | |
validMoves |
Array |
Returns:
- Type
- boolean
clone() → {TemplateGameLogic}
- Description:
✅ ERFORDERLICH: clone()
Erstellt eine TIEFE KOPIE des aktuellen Zustands. Dies ist essentiell für die KI (Minimax, Suchbäume): Die KI simuliert Züge, ohne das echte Spiel zu beeinflussen.
WICHTIG: Kopiere ALLE Eigenschaften, nicht nur primitive Daten!
- Source:
Returns:
Exakte Kopie dieses Zustands
- Type
- TemplateGameLogic
getAllValidMoves() → {Array.<(number|Object)>}
- Description:
✅ ERFORDERLICH: getAllValidMoves()
Liefert ALLE legalen Züge für den aktuellen Spieler. Diese Methode ist kritisch für die KI - sie muss korrekt und vollständig sein.
- Source:
Examples
// Einfaches Format: nur Zahlen
return [0, 1, 2, 3]; // Für RotateBox oder TTT
// Komplexes Format: Objekte
return [
{pile: 0, count: 1},
{pile: 0, count: 2},
{pile: 1, count: 1},
// ... mehr Züge
];
Returns:
Array von möglichen Zügen
- Type
- Array.<(number|Object)>
getNextStates() → {Array.<{move: (number|Object), state: GameState}>}
- Description:
⭐ OPTIONAL: getNextStates()
Wird nur benötigt, wenn du SearchEngine nutzt. Liefert ALLE möglichen Nachfolgezustände.
- Source:
Returns:
- Type
- Array.<{move: (number|Object), state: GameState}>
getStateKey() → {string}
- Description:
✅ ERFORDERLICH: getStateKey()
Generiert einen EINDEUTIGEN String für diesen Spielzustand. Wird verwendet für:
- Duplikaterkennung im Suchbaum
- Transposition Tables (Caching in Minimax)
- Zustands-Hashing
WICHTIG:
- Gleiche Zustände → gleiche Keys
- Unterschiedliche Zustände → unterschiedliche Keys
- JSON.stringify() ist oft die einfachste Lösung
- Source:
Returns:
Eindeutiger Hash für diesen Zustand
- Type
- string
isGoal() → {boolean}
- Description:
⭐ OPTIONAL: isGoal()
Wird nur benötigt, wenn du SearchEngine für Puzzle-Spiele nutzt. Prüft, ob ein ZIELZUSTAND erreicht ist (z.B. für RotateBox).
NICHT benötigt für:
- Normale Spiele mit zwei Spielern (nutze stattdessen winner)
- Wenn du diese Methode nicht brauchst, lass einfach die Fehler-Exception
- Source:
Returns:
true wenn Ziel erreicht
- Type
- boolean
makeMove(move) → {boolean}
- Description:
✅ ERFORDERLICH: makeMove(move)
Führt einen Zug AUS und aktualisiert den Zustand. Dies ist die "Mutation-Funktion" des Spiels.
WICHTIG:
- Ändere den INTERNEN Zustand
- Aktualisiere this.winner, this.isGameOver
- Wechsle this.currentPlayer
- Gib TRUE zurück, wenn gültig; FALSE wenn ungültig
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
move |
number | Object | Der Zug (Format wie in getAllValidMoves) |
Returns:
true wenn erfolgreich, false wenn ungültig
- Type
- boolean