Rozdział 21 · Projekt: kosmiczny strzelec

Co zbudowaliśmy i jak dalej rozwijać grę

Od pierwszego okna w rozdziale 20 do testowanej, omawianej gry z własną grafiką.

Space shooter dobiegł końca — a wraz z nim zamykamy drugi ważny temat kursu: Pełnoprawny Pygame rozwoju gier, od pierwszego okna w Rozdziale 20 po testowalny, dubbingowy Gry z niestandardową grafiką są już dostępne.

Co zbudowaliśmy w tym rozdziale

  • Pełnoprawna gra z pięcioma klasami: Game, Player, Bullet, Enemy, Explosion zamiast zmiennych globalnych i list.
  • Precyzyjne poruszanie się Vector2 i delta time — ta sama zasada z rozdziału 20, zastosowana do bieżącego projektu z wieloma typami obiektów naraz.
  • Timery rozróżniające symulację offline (pojawianie się wrogów, animacje – zachowanie pozostałego czasu poza while) interwałem oraz reakcją na dane gracza (odstęp między strzałami to nie więcej niż jedno zdarzenie na klatkę).
  • Kolizje przez pygame.sprite.groupcollide() oraz spritecollide(), z ochroną przed podwójnym punktowaniem i utratą wielu żyć w jednym jednoczesnym zderzeniu.
  • Jawne stany gry (GameStatus) oraz kontrakt restartowy, który naprawdę resetuje cały stan przejściowy — nie tylko wynik.
  • Własna grafika i dźwięk, załadowane raz, oraz grę, którą można automatycznie sprawdzić — poprzez wdrożenie generatora liczb losowych i uruchomienie bez okna pod „pustym” sterownikiem SDL- (headless).

Dokąd rozwijać projekt dalej

Pomysły na rozwój osobisty
Więcej typów przeciwników
Własne wzorce ruchu (zygzak, celowanie w statek)
Niestandardowe sprite'y i okulary
Bonusy i power-upy
Tymczasowe efekty dzięki temu samemu ruchowi z timerem co niewrażliwość
Tarcza, Podwójny Strzał, Dodatkowe Życie
Szefowie
Duży wróg z własnym zdrowiem (nie jedno trafienie)
Własny zestaw ataków
Utrzymanie rekordu
Pisanie high_score do pliku między kolejnymi przejściami (Rozdział 15)
Nie tylko podczas jednej sesji

Kolejny rozdział zmienia kierunek z lokalnych gier na Pygame na rozwój stron internetowych na Python. Zasady nauczone tutaj to wyraźny podział obowiązków między klasami, wyraźny stany, czyli testowany kod, przydadzą się tam, tylko w innym środowisku.