Sito web di notizie tecnologiche e videogames.

Pygame Shooter Parte 13: Game Over!

9

Questo articolo è la tredicesima parte del progetto PyShooter, oggi vedremo come sviluppare la schermata di game over una volta che il gioco è finito.

Game Over

A questo punto del nostro gioco quando il player finisce le vite a disposizione il gioco termina all’improvviso. In questo articolo andremo infatti a costruire la schermata finale di Game Over con la possibilità per l’utente di giocare di nuovo.

Definiamo quindi un flag game_over fuori dal game loop:

game_over = False
running = True
while running:
    if game_over:
        show_go_screen()

NB: la funzione show_go_screen() verrà richiamata quando game_over è uguale a True, ovvero quando il gioco sarà terminato

Sostituiamo quindi la seguente riga con quella inserita nell’articolo precedente che non faceva altro che terminare ‘bruscamente’ il gioco.

# if the player died and the explosion has finished playing
if player.lives == 0 and not death_explosion.alive():
    game_over = True

Quando appare la schermata di game over se l’utente sceglie di giocare un’altra partita abbiamo bisogno di resettare tutte le variabili del gioco, in modo da poter cominciare una nuova partita.

Aggiungiamo quindi le seguenti righe al game loop:

game_over = True
running = True
while running:
    if game_over:
        show_go_screen()
        game_over = False
        all_sprites = pygame.sprite.Group()
        mobs = pygame.sprite.Group()
        bullets = pygame.sprite.Group()
        powerups = pygame.sprite.Group()
        player = Player()
        all_sprites.add(player)
        for i in range(8):
            newmob()
        score = 0

Game Over Screen

Ora abbiamo bisogno di definire la nostra funzione show_go_screen():

def show_go_screen():
    screen.blit(background, background_rect)
    draw_text(screen, 'SHMUP!', 64, WIDTH / 2, HEIGHT / 4)
    draw_text(screen, 'Arrow keys move, Space to fire', 22,
              WIDTH / 2, HEIGHT / 2)
    draw_text(screen, 'Press a key to begin', 18, WIDTH / 2, HEIGHT * 3 / 4)
    pygame.display.flip()
    waiting = True
    while waiting:
        clock.tick(FPS)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
            if event.type == pygame.KEYUP:
                waiting = False

Tramite questa funzione aspettiamo che l’utente decida di giocare una nuova partita semplicemente premendo un tasto oppure decida di uscire premendo X.

NB: nella funzione usiamo pygame.KEYUP in modo che il gioco cominci quando l’utente ha rilasciato il tasto

Pygame Shooter Parte 13: Game Over!

Link al codice: code

Link al precedente articolo: Pygame Shooter Parte 12: Le vite del player

Commenti