# seeeruu1/space-shooter architecture

> Architecture diagram of the GitHub repository seeeruu1/space-shooter, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/seeeruu1/space-shooter
- Repository: https://github.com/seeeruu1/space-shooter

## Overview

A single-file Pygame space shooter: the runtime loop handles input and delegates game actions to MAIN, which manages menu/game state, entities, collisions, and outcomes. The shown code includes enemy formations, shooting, obstacles, pickups, health/shields, instructions, and win/loss screens. Entity and resource relationships are based on the excerpts; omitted portions of the loop limit confirmation of some interactions.

Main entry points: [`spaceshooter.py`](https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py) (Game Controller), [`img`](https://github.com/seeeruu1/space-shooter/tree/main/img) (Image Assets), [`font`](https://github.com/seeeruu1/space-shooter/tree/main/font) (Font Assets), [`sound`](https://github.com/seeeruu1/space-shooter/tree/main/sound) (Sound Assets)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Game Runtime"]
  node_loop["Pygame Loop<br/>[spaceshooter.py]"]
  node_main["Game Controller<br/>[spaceshooter.py]"]
  node_menu["Menu and Screens<br/>[spaceshooter.py]"]
end

subgraph group_play["Gameplay"]
  node_ship["Player Ship<br/>[spaceshooter.py]"]
  node_enemy["Enemies<br/>[spaceshooter.py]"]
  node_bullet["Projectiles<br/>[spaceshooter.py]"]
  node_obstacle["Obstacles<br/>[spaceshooter.py]"]
  node_pickup["Pickups<br/>[spaceshooter.py]"]
  node_hud["Health Display<br/>[spaceshooter.py]"]
end

subgraph group_resources["Game Resources"]
  node_images["Image Assets"]
  node_fonts["Font Assets"]
  node_sounds["Sound Assets"]
end

node_player(("Player"))

node_loop -->|"creates"| node_main
node_loop -->|"dispatches input"| node_main
node_main -->|"spawns"| node_enemy
node_main -->|"creates"| node_obstacle
node_main -->|"manages"| node_bullet
node_main -->|"manages"| node_pickup
node_main -->|"checks collisions"| node_ship
node_main -->|"draws health"| node_hud
node_main -->|"selects screens"| node_menu
node_loop -->|"requests shooting"| node_main
node_ship -->|"loads"| node_images
node_enemy -->|"loads"| node_images
node_obstacle -->|"loads"| node_images
node_pickup -->|"loads"| node_images
node_main -->|"loads"| node_images
node_loop -->|"loads"| node_fonts
node_loop -->|"loads"| node_sounds

click node_loop "https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py"
click node_main "https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py"
click node_menu "https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py"
click node_ship "https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py"
click node_enemy "https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py"
click node_bullet "https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py"
click node_obstacle "https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py"
click node_pickup "https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py"
click node_hud "https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py"
click node_images "https://github.com/seeeruu1/space-shooter/tree/main/img"
click node_fonts "https://github.com/seeeruu1/space-shooter/tree/main/font"
click node_sounds "https://github.com/seeeruu1/space-shooter/tree/main/sound"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_loop,node_main,node_menu toneBlue
class node_ship,node_enemy,node_bullet,node_obstacle,node_pickup,node_hud toneAmber
class node_images,node_fonts,node_sounds toneMint
class node_player toneIndigo
```

## Components

### Game Runtime

- [Pygame Loop](https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py): `spaceshooter.py`
- [Game Controller](https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py): `spaceshooter.py`
- [Menu and Screens](https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py): `spaceshooter.py`

### Gameplay

- [Player Ship](https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py): `spaceshooter.py`
- [Enemies](https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py): `spaceshooter.py`
- [Projectiles](https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py): `spaceshooter.py`
- [Obstacles](https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py): `spaceshooter.py`
- [Pickups](https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py): `spaceshooter.py`
- [Health Display](https://github.com/seeeruu1/space-shooter/blob/main/spaceshooter.py): `spaceshooter.py`

### Game Resources

- [Image Assets](https://github.com/seeeruu1/space-shooter/tree/main/img): `img`
- [Font Assets](https://github.com/seeeruu1/space-shooter/tree/main/font): `font`
- [Sound Assets](https://github.com/seeeruu1/space-shooter/tree/main/sound): `sound`

### Other components

- **Player**

## Connections

- Pygame Loop → Game Controller: creates (evidence: `spaceshooter.py`)
- Pygame Loop → Game Controller: dispatches input (evidence: `spaceshooter.py`)
- Game Controller → Enemies: spawns (evidence: `spaceshooter.py`)
- Game Controller → Obstacles: creates (evidence: `spaceshooter.py`)
- Game Controller → Projectiles: manages (evidence: `spaceshooter.py`)
- Game Controller → Pickups: manages (evidence: `spaceshooter.py`)
- Game Controller → Player Ship: checks collisions (evidence: `spaceshooter.py`)
- Game Controller → Health Display: draws health (evidence: `spaceshooter.py`)
- Game Controller → Menu and Screens: selects screens (evidence: `spaceshooter.py`)
- Pygame Loop → Game Controller: requests shooting (evidence: `spaceshooter.py`)
- Player Ship → Image Assets: loads (evidence: `spaceshooter.py`)
- Enemies → Image Assets: loads (evidence: `spaceshooter.py`)
- Obstacles → Image Assets: loads (evidence: `spaceshooter.py`)
- Pickups → Image Assets: loads (evidence: `spaceshooter.py`)
- Game Controller → Image Assets: loads (evidence: `spaceshooter.py`)
- Pygame Loop → Font Assets: loads (evidence: `spaceshooter.py`)
- Pygame Loop → Sound Assets: loads (evidence: `spaceshooter.py`)
