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
Co się zmieniło w porównaniu z pierwszą wersją roboczą (21.8)
| Rozdział 21.8 (checkpoint) | Finalna wersja (21.25) | |
|---|---|---|
| Organizacja Kodeksu | Funkcje i słowniki/listy na Rect | Zajęcia Game/Player/Bullet/Enemy/Explosion oprócz pygame.sprite.Group |
| Wniosek | px/s + dt współrzędne ułamkowe są przechowywane oddzielnie od Rect | px/s + dt przez Vector2 wewnątrz klas Player/Bullet/Enemy |
| Grafika | Wypełnione prostokąty | Posiadanie PNG-sprite'ów |
| Sound | Tak | Trzy oryginalne syntetyczne brzmienia |
| Koniec gry | Jedna kolizja, natychmiastowy koniec | System życia nieśmiertelności |
| Złożoność | Stała | Płynnie rośnie wraz z muzyką |
| Stany | Jeden booleowski zmienna | GameStatus: MENU/PLAYING/PAUSED/GAME_OVER |
| Restart | Restartuj tylko Python | Enter na ekranie Game Over |
| Eksplozje | Tak | Animacja wieloklatkowa |
| Testy | 7 testów regresyjnych timerów i ruchu (rozdział 21.3) | 38 testów klasy Game i funkcji pomocniczych, w tym niezależność FPS- |
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