Project Overview
This project recreates the classic Space Invaders gameplay using only Python’s standard library (Turtle).
It’s structured for professional review: configuration isolated in constants.py,
gameplay entities in entities.py, and orchestration/timing in main.py.
The result is a small but well-factored codebase that’s easy to read, tune, and extend.
Core Technologies
- Python 3.x + Turtle (stdlib): rendering and input without external deps
- Event-driven loop: smooth updates via
ontimer()and manualtracer(0)redraws - OOP design: Player, Alien, Bullet, BarrierBlock encapsulated and testable
- Config-first: difficulty & pacing tuned through constants, not magic numbers
Technical Execution & Problem Solving
- Deterministic timing: avoided blocking calls; used fixed frame interval and a separate 1s alien descent timer.
- Collision strategy: simple distance checks keep logic readable and fast enough for Turtle.
- Performance trade-offs: classic feel with
MAX_BULLETS = 1reduces N² checks and keeps frames smooth. - Separation of concerns: orchestration in
Game, state in entities, tuning in constants.
Key Features
- Destructible barriers and basic scoring
- Aliens descend on an interval; game over on contact
- 60fps-style rendering with explicit screen updates
- Portable: runs on stock Python—no install steps
Demonstrated Skill Set
- Designing small projects with production habits (config isolation, modularity, clear naming)
- Event-loop thinking and non-blocking UI updates
- Balancing simplicity with maintainability under real constraints (Turtle)
Reflection
The main challenge was timing within Turtle’s single-threaded model. Establishing a deterministic loop and keeping entities self-contained made debugging straightforward. If iterating, I’d add horizontal swarm movement, restart flow, and enemy bullets, plus extract collision logic for unit tests.