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
Każda kolejna warstwa jest rysowana na poprzedniej – HUD i nakładka stanu są zawsze widoczne, niezależnie od tego, co dzieje się na boisku.
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ę.