Rozdział 21 · Projekt: kosmiczny strzelec

Składanie ostatecznej wersji gry

Wszystkie sekcje od 21.9 do 21.24 są w jednym czytelnym, gotowym do uruchomienia pliku.

Wszystkie sekcje 21.9–21.24 są zebrane w jednym pliku — projects/pygame/space-shooter/space_shooter.py. Nie dzieli się na Wiele modułów: projekt jest na tyle kompaktowy, że pojedynczy czytelny plik jest czytelniejszy niż rozproszonych kilkunastu małych.

projects/pygame/space-shooter/space_shooter.py

game : Gamestate = GameStatus.PLAYINGscore = 640lives = 3player.position = (240.…, 612.0)bullets = 3 sprite'yenemies = 4 sprite'y
Rzeczywisty stan działającej gry w konkretnym momencie — to, co faktycznie jest przechowywane w pamięci między klatkami.

Co się zmieniło w porównaniu z pierwszą wersją roboczą (21.8)

Rozdział 21.8 (checkpoint)Finalna wersja (21.25)
Organizacja KodeksuFunkcje i słowniki/listy na RectZajęcia Game/Player/Bullet/Enemy/Explosion oprócz pygame.sprite.Group
Wniosekpx/s + dt współrzędne ułamkowe są przechowywane oddzielnie od Rectpx/s + dt przez Vector2 wewnątrz klas Player/Bullet/Enemy
GrafikaWypełnione prostokątyPosiadanie PNG-sprite'ów
SoundTakTrzy oryginalne syntetyczne brzmienia
Koniec gryJedna kolizja, natychmiastowy koniecSystem życia nieśmiertelności
ZłożonośćStałaPłynnie rośnie wraz z muzyką
StanyJeden booleowski zmiennaGameStatus: MENU/PLAYING/PAUSED/GAME_OVER
RestartRestartuj tylko PythonEnter na ekranie Game Over
EksplozjeTakAnimacja wieloklatkowa
Testy7 testów regresyjnych timerów i ruchu (rozdział 21.3)38 testów klasy Game i funkcji pomocniczych, w tym niezależność FPS-
Realne okno: Bogata rama rozgrywki – niebieski statek, kilku wrogów i pocisków, gwiaździste tło, czytelny HUD z wynikiem 640
Właściwa rama ostatecznej wersji to ten sam statek co w sekcji 21.2, ale rozwinął się w pełnoprawną grę.
Challenge
Kolejny typ wroga

Dodaj trzeci EnemySpec — na przykład „bomber”

Challenge
Bonusy na planszy gry

Dodaj klasę PowerUp: dobieranego obiektu, tymczasowo zmniejszającego FIRE_INTERVAL po kolizji z statkiem — użyj tej samej metody timera, co dla nietykalności.

Praktyka: Zbuduj i wydaj finalną grę
Pygame otwiera natywne okno Python – uruchomione lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Otwórz praktykę →