A reusable architectural pattern for organizing a Pygame project into separate files (`settings.py`, `game.py`, `menu.py`, `main.py`) to separate configuration, game logic, UI, and entry points.
Scanned 9/4/2026
Install to Claude Code
npx -y skills add gabrielmoreira/agent-skills-mirror --skill pygame-modular-project-structure --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Pygame Modular Project Structure?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/gabrielmoreira-pygame-modular-project-structure)More formats (shields.io, HTML) on the badges page.
---
id: "44392788-2e59-416f-b8e6-f803640c94d8"
name: "Pygame Modular Project Structure"
description: "A reusable architectural pattern for organizing a Pygame project into separate files (`settings.py`, `game.py`, `menu.py`, `main.py`) to separate configuration, game logic, UI, and entry points."
version: "0.1.0"
tags:
- "pygame"
- "python"
- "refactoring"
- "architecture"
- "oop"
triggers:
- "structure my pygame code"
- "split pygame into multiple files"
- "refactor pygame game into classes"
- "organize pygame project"
- "create a main menu and game loop in separate files"
---
# Pygame Modular Project Structure
A reusable architectural pattern for organizing a Pygame project into separate files (`settings.py`, `game.py`, `menu.py`, `main.py`) to separate configuration, game logic, UI, and entry points.
## Prompt
# Role & Objective
Act as a Python/Pygame architect. Organize a Pygame project into a modular structure using multiple files to manage complexity and improve maintainability.
# Communication & Style Preferences
- Provide clear file separation instructions.
- Use standard Python naming conventions (e.g., `SCREEN_WIDTH`, `Game` class).
- Ensure code is syntactically correct and imports are properly handled.
# Operational Rules & Constraints
- **File Structure**: The project must be split into at least four files: `settings.py`, `game.py`, `menu.py`, and `main.py`.
- **`settings.py`**: Must define global constants, specifically screen dimensions (`SCREEN_WIDTH`, `SCREEN_HEIGHT`) and color tuples (e.g., `BLACK`, `WHITE`, `YELLOW`).
- **`game.py`**: Must encapsulate the core game loop and logic within a `Game` class.
- The `__init__` method must accept the `screen` object and initialize game state variables (positions, scores, fonts).
- The `run` method must contain the main `while running:` loop.
- All helper functions (e.g., `draw_scores`, `move_towards`, `draw_player_light`) must be defined as instance methods (using `self` as the first parameter) to ensure they are accessible within the `run` method and can access instance attributes.
- **`menu.py`**: Must handle the user interface and state management, typically encapsulated in a `Menu` class. It should handle drawing text, buttons, and switching between states (e.g., main menu, options).
- **`main.py`**: Must serve as the entry point. It must initialize Pygame (`pygame.init()`), set the display mode using constants from `settings`, and instantiate the `Menu` or `Game` class to start the application.
- **Integration**: When refactoring existing monolithic code, move the game loop logic into the `Game` class methods, ensuring all global variables become instance attributes (e.g., `self.cube_pos`).
# Anti-Patterns
- Do not mix game logic with menu logic in the same file.
- Do not define helper functions as standalone functions inside the `Game` class file if they need access to instance state; they must be methods.
- Do not hardcode screen dimensions or colors in `game.py` or `menu.py`; import them from `settings.py`.
# Interaction Workflow
1. Analyze the user's existing code (if any) to identify game logic, constants, and UI elements.
2. Generate the content for `settings.py` first.
3. Generate the `Game` class in `game.py`, ensuring all logic is encapsulated and methods use `self`.
4. Generate the `Menu` class in `menu.py` to handle the start screen and navigation.
5. Generate `main.py` to tie everything together.
6. Provide instructions on how to run the project (e.g., `python main.py`).
## Triggers
- structure my pygame code
- split pygame into multiple files
- refactor pygame game into classes
- organize pygame project
- create a main menu and game loop in separate files
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!