In questa lezione impareremo ad inserire immagini in pygame.
Innanzitutto presentiamo la funzione che serve a caricare un’immagine, cioè la funzione load che si trova nel sotto modulo image: pygame.image.load().
All’interno delle parentesi si indica il nome dell’immagine, facendo attenzione ad indicare il percorso esatto se l’immagine non è nella stessa cartella del file che creeremo.
Ecco dunque un esempio:
auto=pygame.image.load('images/auto.png')
Possiamo invece utilizzare pygame.transform.scale per ridimensionare un’immagine, anche se non è la scelta migliore da fare. Infatti le immagini vanno scalate con appositi programmi prima di caricarle.
auto=pygame.transform.scale(auto,(300, 150))
Inserire immagini in pygame e muoverle
Realizziamo adesso un semplice esempio in cui carichiamo un’immagine e dopo la sposteremo dalla posizione iniziale.
Innanzitutto prendiamo un’immagine a piacere e la carichiamo con la funzione load. Dopo stabiliamo le coordinate iniziali x e y.
Poi realizziamo gli eventi legati ai pulsanti freccia su, freccia giù, freccia a sinistra e freccia a destra, variando di conseguenza le coordinate quando premiamo i tasti. Possiamo omettere il print che spiega cosa succede quando premiamo il pulsante specificato, l’ho inserito solo a scopo dimostrativo.
Per rendere effettive le modifiche inseriamo pygame.display.update().
Ecco dunque il codice completo.
import pygame, sys
from pygame.locals import *
pygame.init()
screen=pygame.display.set_mode((800, 600))
pygame.display.set_caption('Muovere immagini')
CYAN=(0,255,255)
car=pygame.image.load('images/car.png')
x=10
y=50
while True:
screen.fill(CYAN)
screen.blit(auto, (x,y))
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP:
print('Vai su')
y-=5
elif event.key == pygame.K_DOWN:
print('Vai giù')
y+=5
elif event.key == pygame.K_LEFT:
print('Vai a sinistra')
x-=5
elif event.key == pygame.K_RIGHT:
print('Vai a destra')
x+=5
pygame.display.update()
Immagini in movimento
Realizziamo adesso un esempio creando un’immagine in movimento.
Utilizziamo l’oggetto Clock, un oggetto utilizzato per misurare i millesimi di secondo.
Specifichiamo l’FPS, ovvero il numero di frame in un secondo, che verrà passato come argomento al metodo tick().
Il metodo tick lo chiameremo per ultimo e si occupa di arrestare il movimento per il tempo necessario ad ottenere la temporizzazione.
Utilizziamo una variabile d che sta per direzione a cui faremo assumere i valori tra 1 e 4. Il valore 1 sta ad indicare che l’oggetto si muoverà a destra, il valore 2 indica che l’oggetto si muoverà sotto, il valore 3 indica invece che l’oggetto si muoverà a sinistra, infine il valore 4 indica che l’oggetto si muoverà su.
Ecco dunque il codice completo:
import pygame, sys
pygame.init()
YELLOW=(255, 255, 0)
screen=pygame.display.set_mode((800, 600), 0, 32)
pygame.display.set_caption('Animation')
ball=pygame.image.load('images/palla.png')
x=0
y=0
d=1
FPS=20
cl=pygame.time.Clock()
while True:
screen.fill(YELLOW)
screen.blit(ball, (x, y))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if d==1: #va a destra
x += 10
if x==300:
d=2 #imposta la direzione per andare giù
elif d==2: #va giù
y+=10
if y==300:
d=3 #imposta la direzione per andare a sinistra
elif d==3: #va a sinistra
x-=10
if x==0:
d=4 #imposta la direzione per andare sotto
elif d==4: #va su
y -= 10
if y==0:
d=1
pygame.display.update()
cl.tick(FPS)
Alcuni link utili
Indice tutorial sul linguaggio python
1 – Introduzione al linguaggio python
3 – Operatori aritmetici e di assegnazione in python
8 – Errori in python
9 – Script python
10 – Scambio di variabili in python