Snake Game Architecture ====================== - Game Class - Responsibilities: - Initialize game objects (snake, food, and board) - Main game loop - Handle user input for snake direction - Update the game state (move snake, check for collisions, etc.) - Keep track of the score - Display the game on the screen - Snake Class - Attributes: - Position (list of tuples representing the coordinates of each segment) - Direction (tuple representing the current direction of movement) - Length (integer representing the length of the snake) - Methods: - Move (update the position of each segment) - Change direction (based on user input) - Grow (increase the length of the snake when it eats food) - Food Class - Attributes: - Position (tuple representing the coordinates of the food) - Methods: - Spawn (randomly generate a new position for the food) - Board Class (Optional) - Attributes: - Size (width and height of the game board) - Methods: - Draw (draw the boundaries of the game board) - Check collision (check if the snake has collided with the walls or itself)