Fai punti con le gemme
Fa parte della sezione Il game loop del percorso Pygame di Coddy. Lezione 15 di 35.
A un gioco serve un punteggio. Tienilo in una variabile creata prima del ciclo, score = 0, e aggiungi 1 con score += 1 ogni volta che il giocatore raccoglie una gemma.
Questo gioco mostra il punteggio come una fila di piccoli quadrati, uno per punto. Un ciclo for disegna una fila di qualsiasi cosa: qui, tre cerchi distanti 30 pixel.
for i in range(3):
pygame.draw.circle(screen, (255, 200, 0), (20 + 30 * i, 20), 10)Al primo passaggio i vale 0, poi 1, poi 2, quindi ogni cerchio si trova 30 pixel più a destra. Con range(score) la fila cresce di uno ogni volta che aumenta il punteggio.
Sfida
FacileConta le gemme e mostra il conteggio in alto.
- Aggiungi
score = 0prima del ciclo e incrementalo di 1 quando un clic colpisce la gemma. - Dopo aver disegnato la gemma, per ogni
iinrange(score), disegna un rettangolo rosa(240, 110, 180)in(10 + 10 * i, 14, 8, 8).
Premi «Gioca» e raccogli tre gemme: tre segni rosa si allineano in alto a sinistra. Poi premi «Verifica».
Provalo tu
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Gem Hunt")
clock = pygame.time.Clock()
gx, gy = 225, 165
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN:
x, y = event.pos
if gx <= x <= gx + 30 and gy <= y <= gy + 30:
gx = random.randint(15, 435)
gy = random.randint(55, 315)
screen.fill((30, 30, 46))
gem_points = [(gx + 15, gy), (gx + 30, gy + 15), (gx + 15, gy + 30), (gx, gy + 15)]
pygame.draw.polygon(screen, (80, 220, 255), gem_points)
mouse_x, mouse_y = pygame.mouse.get_pos()
pygame.draw.circle(screen, (240, 240, 240), (mouse_x, mouse_y), 10, 2)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Tutte le lezioni di Il game loop
Esercitati da solo: Playground Pygame