Rozdział 21 · Projekt: kosmiczny strzelec
Restart gry bez ponownego uruchomienia programu
Restart z pewnością zresetuje każdy fragment stanu przejściowego — nie tylko wynik.
Rozdział 21.7 nie miała już drogi powrotnej Game Over. Ostateczna wersja zaczyna się od razu Proces — ale restart musi zresetować każdy bit stanu przejściowego, nie tylko wynik.
fragment_start_new_game.py
def start_new_game(self):
self.bullets.empty()
self.enemies.empty()
self.explosions.empty()
self.player = self._make_player()
self.score = 0
self.lives = STARTING_LIVES
self.spawn_timer = interval_poyavleniya_vraga(0)
self._reset_stars()
self.state = GameStatus.PLAYING
| Reset | Ocalony |
|---|---|
| Pozycja statku | Nagranie sesji (high_score) |
| Wszystkie kule, wrogowie, eksplozje | |
| Hrabia i Żywoty | |
| Timer pojawiania się wrogów i interwał strzału | |
| Timer niewrażliwości |
Zapomniany pocisk z poprzedniej gry to prawdziwy błąd, a nie hipotetyczny
Jeśli
self.bullets.empty() chybi, stare pociski z poprzedniej próby pozostaną wiszące na ekranie nowej gry – wizualnie nieszkodliwe, ale wyraźnie błędne i łatwe do przeoczenia podczas testów ręcznych, jeśli nie sprawdzisz dokładnie restartu z niepustymi grupami.