Pygame, che è il motore per creare veri e propri videogiochi!

Se Matplotlib è un foglio di carta, Pygame è un cartone animato: dobbiamo dire al computer di ridisegnare tutto tantissime volte al secondo (i famosi FPS, Frames Per Second).


Un cerchio giallo in una finestra nera

Cosa impariamo, ragazzi, con questo esempio?

  1. I Colori RGB:  i colori sono come pozioni magiche fatte di Red (Rosso), Green (Verde) e Blue (Blu). Ogni valore va da 0 a 255.

    • (255, 0, 0) è rosso purissimo.

    • (255, 255, 255) è bianco (tutte le luci accese).

    • (0, 0, 0) è nero (tutte le luci spente).

  2. Le Coordinate ($x$, $y$): In Pygame, il punto (0,0) è l’angolo in alto a sinistra.

    • Se aumenti la $x$, vai a destra.

    • Se aumenti la $y$, vai in basso (questo di solito li sconcerta, perché a scuola la $y$ va verso l’alto!).

 

import pygame

pygame.init()
# Creiamo il foglio da disegno
finestra = pygame.display.set_mode((400, 400))

# Colore dello sfondo (Blu scuro) e del cerchio (Giallo)
sfondo = (0, 0, 50)
giallo = (255, 255, 0)

# Disegniamo una volta sola
finestra.fill(sfondo)
# Disegna un cerchio: (dove, colore, (centro_x, centro_y), raggio)
pygame.draw.circle(finestra, giallo, (200, 200), 80)

# Mostra il disegno
pygame.display.flip()

# Aspetta un po’ prima di chiudere (5 secondi)
pygame.time.delay(5000)
pygame.quit()

 


Esercizio lampo: “Il semaforo”

Modificare il codice sopra per disegnare tre cerchi uno sopra l’altro, come un semaforo:

  • Un cerchio Rosso in alto.

  • Un cerchio Giallo in mezzo.

  • Un cerchio Verde in basso.

Consiglio: Dovrete cambiare solo il valore della coordinata y per ogni cerchio (ad esempio: 100, 200 e 300).


Muoviamo la sfera rossa

Facciamo finta che Pygame sia un telecomando: premi un tasto e il cerchio si sposta. Niente rimbalzi automatici, niente calcoli strani. Solo tu che guidi il cerchio sul foglio.

Esercizi:

  1. Effetto pennello: mettere un simbolo di commento (#) davanti alla riga dello sfondo: # schermo.fill((255, 255, 255))
  2. Rendi lo sfondo di colore nero
  3. Aumenta a 100 le dimensioni del raggio della pallina
  4. Cambia la pallina da Tennis in una da basket arancione
  5. Accelera la velocità dei tasti da +1 a +10
  6. Inverti il tasto destro con il sinistro

Un quadrato rosso che si muove

Ecco l’esempio più semplice possibile: una finestra nera con un quadrato rosso che puoi muovere con le frecce della tastiera.

 

import pygame

# 1. Iniziamo il gioco
pygame.init()
schermo = pygame.display.set_mode((600, 400)) # Crea una finestra 600×400
orologio = pygame.time.Clock() # Serve per gestire la velocità

# Posizione iniziale del nostro “giocatore” (il quadrato)
x, y = 300, 200

# 2. Il “Loop” principale (il cuore del gioco che batte all’infinito)
esecuzione = True
while esecuzione:
# Controlla se abbiamo cliccato la “X” per uscire
for evento in pygame.event.get():
if evento.type == pygame.QUIT:
esecuzione = False

# 3. Controlla i tasti premuti
tasti = pygame.key.get_pressed()
if tasti[pygame.K_LEFT]: x -= 5
if tasti[pygame.K_RIGHT]: x += 5
if tasti[pygame.K_UP]: y -= 5
if tasti[pygame.K_DOWN]: y += 5

# 4. Disegna!
schermo.fill((0, 0, 0)) # Coloriamo lo sfondo di nero (per pulire il vecchio disegno)
pygame.draw.rect(schermo, (255, 0, 0), (x, y, 50, 50)) # Disegna il quadrato rosso

pygame.display.flip() # Aggiorna la finestra con il nuovo disegno
orologio.tick(60) # Mantieni il gioco a 60 fotogrammi al secondo

pygame.quit()