MCP Server Template for Cursor IDE

# Snake Game Implementation Plan ## Project Overview This game plan outlines the implementation of a classic Snake game with the following features: - Grid-based game board - Snake movement in four directions (up, down, left, right) - Food spawning randomly on the board - Score tracking - Game over when the snake hits the wall or itself - Option to restart the game ## Implementation Stages ### Stage 1: Project Setup and Basic Structure - [ ] Create project directory structure - Core game logic module - UI/rendering module - Input handling module - Main game loop module - [ ] Set up development environment - Install necessary dependencies (pygame for graphics) - Configure testing environment with pytest - [ ] Create initial project files - main.py (entry point) - game.py (game logic) - snake.py (snake class) - food.py (food class) - ui.py (rendering) **Implementation Details:** - We'll use Python with Pygame for this implementation as it provides simple graphics capabilities and event handling - The project will follow a modular structure to separate concerns - Core game logic will be independent of rendering to allow for easier testing ### Stage 2: Core Game Logic Implementation - [ ] Implement the Snake class - Properties: position, length, direction, body segments - Methods: move, grow, check collision - [ ] Implement the Food class - Properties: position - Methods: spawn at random location - [ ] Implement the Game class - Properties: game state, score, grid size - Methods: update game state, check win/loss conditions **Implementation Details:** - The Snake will be represented as a list of coordinates for each body segment - Movement will be implemented by adding a new head position and removing the tail (unless growing) - Collision detection will check if the snake's head position overlaps with its body or the walls - Food will spawn at random grid positions not occupied by the snake ### Stage 3: Rendering and UI - [ ] Set up Pygame window and game loop - [ ] Implement grid rendering - [ ] Implement snake rendering - [ ] Implement food rendering - [ ] Add score display - [ ] Create game over screen - [ ] Add restart functionality **Implementation Details:** - The game grid will be rendered as a series of cells - The snake will be rendered as connected segments with a distinct head - We'll use simple shapes and colors for clarity - Text rendering will be used for score and game over messages ### Stage 4: Input Handling and Game Controls - [ ] Implement keyboard input for snake direction - [ ] Add pause functionality - [ ] Implement game restart controls - [ ] Add game exit option **Implementation Details:** - Direction changes will be queued to prevent multiple direction changes in a single game tick - The snake cannot reverse direction (e.g., can't go right when moving left) - Pause will freeze the game state but still allow for exit or restart ### Stage 5: Game Loop and Timing - [ ] Implement main game loop - [ ] Add timing control for snake movement speed - [ ] Implement difficulty progression (snake speeds up as it grows) **Implementation Details:** - The game will run at a fixed frame rate with snake movement occurring at regular intervals - As the score increases, the snake movement interval will decrease (making the game faster) - The game loop will handle rendering, input processing, and game state updates ### Stage 6: Testing and Refinement - [ ] Write unit tests for core game logic - [ ] Test edge cases (wall collisions, self collisions) - [ ] Optimize performance if needed - [ ] Add polish (animations, sounds, etc.) **Implementation Details:** - Core game logic will be tested independently of rendering - We'll use pytest for automated testing - Performance optimizations will focus on collision detection and rendering if needed ### Stage 7: Documentation and Packaging - [ ] Add code documentation - [ ] Create user instructions - [ ] Package the game for distribution - [ ] Create a README with installation and playing instructions **Implementation Details:** - Code will be documented with docstrings and comments - User instructions will be included in-game and in the README - The game will be packaged as a standalone executable using PyInstaller or similar tool