Rozdział 21 · Projekt: kosmiczny strzelec
Gwiazdy tła i kolejność rysunku
Proceduralne gwiazdy zamiast gotowego obrazu — i wyraźny porządek warstw, by HUD zawsze pozostawał na wierzchu.
Ostatnim akcentem atmosfery jest gwiaździste tło. Zamiast gotowego obrazu rysowane są gwiazdy Proceduralnie: lista małe kropki o własnej szybkości i kolorze, z których każda pętle od góry do dołu.
fragment_stars.py
def _update_stars(self, dt):
for star in self.stars:
star.y += star.speed * dt
if star.y > self.playfield.bottom:
star.y = self.playfield.top
star.x = self.rng.uniform(0, SHIRINA)
Różne gwiazdy mają różną prędkość (od 20 do 90 px/s), dlatego tworzą lekkie wrażenie głębi: szybkie punkty są bliżej, wolne — dalej, ten sam trik wzrokowy jak paralaksa w bardziej złożonych grach, tylko bez oddzielnych warstw.
Kolejność losowania decyduje, co jest „na górze”
Tło i gwiazdy
screen.fill(...)
_render_stars()
↓
Wrogowie
self.enemies.draw(screen)
↓
Bullets
self.bullets.draw(screen)
↓
Statek Gracza
screen.blit(player.image, player.rect)
↓
Eksplozje
self.explosions.draw(screen)
↓
HUD
wynik, życia, fala — własny pas u góry
↓
Nakładka statusu
menu / pauza / Game Over – na górze wszystkiego
Kolejność — liniowa lista, a nie losowe dopasowanie
Rozdział 20.13 (Doświadczenie mobilne) i 21.12 już podkreślają, że interfejs użytkownika nie powinien ginąć pod obiektami gry. Rozdział HUD i nakładka są tu rysowane na końcu, właśnie dlatego, że nie mogą zostać fizycznie trafione przez wroga ani eksplozję.