Mahjong

Phase 1: Board model, tile set logic and rule groundwork

Implement full Mahjong tile model, grid layout system and basic rule engine.

  • Build tile classes + identifiers
  • Generate full shuffled set
  • Encode adjacency/removal rules

Functional Output: A fully generated logical board with rule-validated removable tiles.


Phase 2: GUI foundation and interactive board rendering

Create the visual interface and map the tile model to clickable UI elements.

  • Draw layered tiles with depth
  • Highlight valid moves
  • Handle selection states

Functional Output: A functional GUI showing the board with interactive tile selection.


Phase 3: Tile removal mechanics and game progression

Integrate logic + GUI to support full turn cycles and remove matched tiles.

  • Detect legal matching pairs
  • Animate removals
  • Update board state

Functional Output: Tiles can be matched and removed correctly, updating the GUI and logic.


Phase 4: Game states, scoring, timers and win/loss conditions

Implement scoring, hints, timers and end-state detection for complete gameplay flow.

  • Track score combos
  • Provide hint logic
  • Detect no-move/empty board

Functional Output: Game rounds progress with scoring, hints and consistent win/loss evaluation.


Phase 5: Save/load system, settings and persistent profiles

Add persistence for progress, user preferences and resume functionality.

  • Store board snapshots
  • Save settings/profile
  • Load saved sessions

Functional Output: Game state can be saved, restored and configured across sessions.


Phase 6: Advanced features, solver module and polish

Implement auto-solver, undo/redo, animations and full stability testing.

  • Build solver to find optimal paths
  • Add undo stack
  • Refine animations/UI

Functional Output: A polished, stable Mahjong app with solver, undo/redo and smooth interactions.