libri-javascript-python

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

2 – Le variabili in python

3 – Operatori aritmetici e di assegnazione in python

4 – Stringhe in python

5 – Casting in python

6 – Input e print in python

7 – Primi esercizi in python

8 – Errori in python

9 – Script python

10 – Scambio di variabili in python