Snake
Phase 1: Board model, snake, food, and obstacles
Implement dynamic board from JSON, snake movement rules, food spawning, and obstacle handling.
- Parse JSON for size/obstacles
- Initialize snake and food
- Enforce movement and collision rules
Functional Output: Board initializes correctly with snake, food, and obstacles respecting all rules.
Phase 2: Minimal GUI rendering and animation
Create visual representation of board, snake, food, and obstacles with smooth movement updates.
- Draw grid, snake, food, obstacles
- Animate snake movement
- Highlight collisions
Functional Output: Interactive board showing snake, obstacles, and food with correct movement animations.
Phase 3: Single game session mechanics and scoring
Implement a full game round with score tracking and end-of-game detection.
- Update score on food consumption
- Detect collisions/end of round
- Display current score
Functional Output: Game round completes correctly with score updates and collision detection.
Phase 4: Multi-round session and session flow
Allow multiple consecutive games in a session with option to continue or end.
- Track session rounds
- Display session menu between rounds
- Carry over high score
Functional Output: Players can continue or terminate session with cumulative scoring across rounds.
Phase 5: High score persistence and JSON integration
Implement persistent high score tracking and apply obstacle/board configurations from JSON.
- Load/save high score
- Apply JSON board configurations
- Validate consistency
Functional Output: High score updates and persists; board layouts match JSON specifications.
Phase 6: Undo, settings, polish, and final UI enhancements
Add undo for last move (optional), speed/settings adjustments, and visual/audio polish.
- Implement undo stack
- Allow speed or size adjustments
- Refine animations and messages
Functional Output: Polished, configurable game supporting session management, high scores, and smooth visual feedback.