Key Ideas
1Game States. Named modes (menu, playing, paused, game_over) that determine what updates and draws each frame.
2Scene Class. A base class with handle_events(), update(dt), draw(screen) — every screen (Menu, Play, GameOver) subclasses it.
3SceneManager. Holds the current Scene and swaps it out when a scene requests a transition (e.g. Play → GameOver).
4Asset Loading Helper. One centralized function/module loads and caches every image/sound, used everywhere instead of scattered load calls.
5Config Module. A config.py holding constants (SCREEN_WIDTH, FPS, colors) so magic numbers aren't repeated across files.