Sito web di notizie tecnologiche e videogames.

Pygame Shooter Parte 8: Disegnare il punteggio

10

Questo articolo è l’ottava parte del progetto PyShooter, oggi vedremo come tenere traccia e disegnare il punteggio del player.

Calcolare il punteggio

Tenere traccia del punteggio del player è facile in quanto abbiamo bisogno di una variabile che verrà inizializzata a 0 e che verrà incrementata ogni volta che un proiettile distrugge una meteora.

Dato che le meteore sono di dimensioni diverse e che quelle più grandi sono più facili da colpire rispetto a quelle più piccole assegneremo un punteggio più alto quando se ne colpisce una di quelle più piccole.

Inizializziamo una variabile score fuori dal game loop:

score = 0 

Per assegnare i punti in base al raggio delle meteore possiamo aggiungere la seguente riga di codice dove andiamo a controllare le collisioni tra le meteore ed i proiettili:

hits = pygame.sprite.groupcollide(mobs, bullets, True, True)
for hit in hits:   
    score += 50 - hit.radius   
    m = Mob()   
    all_sprites.add(m)   
    mobs.add(m)

Renderizzare il punteggio

Ora abbiamo una variabile che contiene il nostro punteggio, non dobbiamo fare altro che disegnarne il contenuto su schermo. Per fare ciò creiamo una funzione draw_text() che riceve quattro parametri:

  • La superficie su cui vogliamo disegnare
  • Il testo da disegnare
  • La dimensione del testo
  • X e Y, ovvero dove voglio disegnare la stringa

Di seguito la funzione:

# scegliamo il font
font_name = pygame.font.match_font('arial')
def draw_text(surf, text, size, x, y):
    font = pygame.font.Font(font_name, size)
    text_surface = font.render(text, True, WHITE)
    text_rect = text_surface.get_rect()
    text_rect.midtop = (x, y)
    surf.blit(text_surface, text_rect)

NB: nella funzione font_render() il parametron True serve per attivare o disattivare l’anti-aliasing

Pygame Shooter Parte 8: Disegnare il punteggio

Disegnare il punteggio

A questo punto siamo pronti per disegnare il testo sullo schermo, per fare ciò è sufficiente richiamare la nostra funzione nel game loop passandole la X e la Y desiderate.

screen.fill(BLACK)
screen.blit(background, background_rect)
all_sprites.draw(screen)
draw_text(screen, str(score), 18, WIDTH / 2, 10)

Pygame Shooter Parte 8: Disegnare il punteggio

Nel prossimo articolo vedremo come aggiungere suoni e musica al nostro videogioco!

Link al codice: code

Link al precedente articolo: Pygame Shooter Parte 7: Animazione degli sprite

 

Commenti