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.