[Feature]: BoardManager kann prüfen, ob Tiles "frei" liegen #23

Closed
opened 2026-02-06 17:11:00 +00:00 by FlorianReetz · 1 comment
Owner

Ziel

Der BoardManager soll feststellen können, ob ein einzelnes Tile im aktuellen Board-Zustand „frei“ liegt und damit grundsätzlich selektierbar ist.

„Frei“ ist dabei eine reine Board-Zustandsfrage und unabhängig von Spielregeln oder Match-Logik.

Motivation

Diese Funktionalität ist eine notwendige Voraussetzung für zukünftige Spielregeln (z. B. Solitaire-Mahjong), soll aber nicht Teil eines RuleSets sein.

Der BoardManager ist verantwortlich für:

  • Kenntnis der Board-Geometrie
  • Kenntnis über Nachbarschaften und Layer
  • Auswertung, ob ein Tile blockiert ist oder nicht

RuleSets sollen diese Information lediglich abfragen, nicht selbst berechnen.

Scope

  • Einführung einer öffentlichen Methode im BoardManager, z. B.:

    func is_tile_free(tile: Tile) -> bool
    
    

Die Methode betrachtet ausschließlich:

  • Tiles über dem Ziel-Tile
  • seitliche Blockaden (links / rechts)
  • Die Methode enthält keine Spielregeln, kein Matching, keine Punkte-Logik

Nicht Teil dieses Issues

  • Keine Match-Logik
  • Kein RuleSet
  • Keine Änderungen an Layout-Definitionen
  • Keine UI- oder Input-Logik
  • Keine Zufallsverteilung von TileType / TileValue

Akzeptanzkriterien

  • Der BoardManager kann für ein einzelnes Tile zuverlässig ermitteln, ob es frei liegt
  • Der Begriff „frei“ ist klar und eindeutig im Code abgebildet
  • Randfälle (z. B. keine Nachbarn, nur einseitig blockiert, Tile auf oberster Ebene) werden korrekt behandelt
  • Die Funktion ist unabhängig von TileType und TileValue

Tests

Unit-Tests decken typische Mahjong-Situationen ab:

  • freies Tile ohne Nachbarn
  • Tile mit beidseitiger Blockade
  • Tile mit freier linker oder rechter Seite
  • Tile mit einem oder mehreren Tiles darüber
  • Tests schlagen fehl, wenn die Board-Geometrie falsch interpretiert wird
  • Alle bestehenden Tests bleiben grün

Technische Hinweise

  • Die Implementierung soll ausschließlich auf den internen Board-Datenstrukturen des BoardManager basieren
  • Tile selbst enthält keine Logik, um seinen Freiheitsstatus zu bestimmen
## Ziel Der `BoardManager` soll feststellen können, ob ein einzelnes `Tile` im aktuellen Board-Zustand „frei“ liegt und damit grundsätzlich selektierbar ist. „Frei“ ist dabei **eine reine Board-Zustandsfrage** und unabhängig von Spielregeln oder Match-Logik. ## Motivation Diese Funktionalität ist eine notwendige Voraussetzung für zukünftige Spielregeln (z. B. Solitaire-Mahjong), soll aber **nicht Teil eines RuleSets** sein. Der `BoardManager` ist verantwortlich für: - Kenntnis der Board-Geometrie - Kenntnis über Nachbarschaften und Layer - Auswertung, ob ein Tile blockiert ist oder nicht RuleSets sollen diese Information lediglich **abfragen**, nicht selbst berechnen. ## Scope - Einführung einer öffentlichen Methode im `BoardManager`, z. B.: ```gdscript func is_tile_free(tile: Tile) -> bool Die Methode betrachtet ausschließlich: - Tiles über dem Ziel-Tile - seitliche Blockaden (links / rechts) - Die Methode enthält keine Spielregeln, kein Matching, keine Punkte-Logik ### Nicht Teil dieses Issues - Keine Match-Logik - Kein RuleSet - Keine Änderungen an Layout-Definitionen - Keine UI- oder Input-Logik - Keine Zufallsverteilung von TileType / TileValue ## Akzeptanzkriterien - [x] Der `BoardManager` kann für ein einzelnes `Tile` zuverlässig ermitteln, ob es frei liegt - [x] Der Begriff „frei“ ist klar und eindeutig im Code abgebildet - [x] Randfälle (z. B. keine Nachbarn, nur einseitig blockiert, Tile auf oberster Ebene) werden korrekt behandelt - [x] Die Funktion ist unabhängig von `TileType` und `TileValue` ## Tests Unit-Tests decken typische Mahjong-Situationen ab: - [x] freies `Tile` ohne Nachbarn - [x] `Tile` mit beidseitiger Blockade - [x] `Tile` mit freier linker oder rechter Seite - [x] `Tile` mit einem oder mehreren `Tile`s darüber - [x] Tests schlagen fehl, wenn die Board-Geometrie falsch interpretiert wird - [x] Alle bestehenden Tests bleiben grün ## Technische Hinweise - Die Implementierung soll ausschließlich auf den internen Board-Datenstrukturen des `BoardManager` basieren - `Tile` selbst enthält keine Logik, um seinen Freiheitsstatus zu bestimmen
FlorianReetz added reference feature/23-check-if-tiles-are-free 2026-02-09 17:25:00 +00:00
Author
Owner

Kann in Review

Kann in Review
Sign in to join this conversation.
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Headframe_Studio/MamaMahjong#23
No description provided.