In questa lezione utilizzeremo alcuni metodi dell’oggetto Rect, al fine di implementare qualche esempio.
In particolare vedremo i metodi move, move_ip e collidepoint.
Metodi dell’oggetto Rect – move_ip
In questo primo esempio utilizzeremo il metodo move_ip() per spostare il rettangolo creato utilizzando i tasti della tastiera, ad esempio K_UP, K_DOWN, K_LEFT, K_RIGHT.
Quindi quando clicchiamo su K_UP, sposteremo il rettangolo verso l’alto, cioè imposteremo ad esempio move_ip(0,-5) . In questo modo sposteremo solo la y di -5.
Invece quando clicchiamo su K_DOWN, sposteremo il rettangolo verso il basso, cioè imposteremo ad esempio move_ip(0,5) . In questo modo sposteremo solo la y di 5.
Poi, quando clicchiamo su K_LEFT, sposteremo il rettangolo verso sinistra, cioè imposteremo ad esempio move_ip(-5,0) . In questo modo sposteremo solo la x di -5.
Infine, quando clicchiamo su K_RIGHT, sposteremo il rettangolo verso destra, cioè imposteremo ad esempio move_ip(5,0) . In questo modo sposteremo solo la x di 5.
Ecco dunque un esempio completo:
import pygame, sys
from pygame.locals import *
pygame.init()
screen=pygame.display.set_mode((800, 600))
pygame.display.set_caption('Oggetto Rect')
CYAN=(0,255,255)
RED=(255,0,0)
r1=pygame.Rect(20,20,30,30)
s=pygame.Surface((30,30))
s.fill(RED)
while True:
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:
r1.move_ip(0, -5)
elif event.key == pygame.K_DOWN:
r1.move_ip(0, 5)
elif event.key == pygame.K_LEFT:
r1.move_ip(-5, 0)
elif event.key == pygame.K_RIGHT:
r1.move_ip(5, 0)
screen.fill(CYAN)
screen.blit(s,r1)
pygame.display.update()
Move
Utilizziamo il metodo move() per spostare in maniera dinamica il nostro rettangolo rosso, di dimensione 30 x 30 pixel, al clic del mouse.
All’interno delle parentesi mettiamo le coordinate ottenute con il clic del mouse: event.pos.
Ecco quindi l’esempio completo:
import pygame, sys, random
pygame.init()
screen=pygame.display.set_mode((800, 600))
pygame.display.set_caption('Oggetto Rect')
CYAN=(0,255,255)
RED=(255,0,0)
w=30
l=30
r1=pygame.Rect(0,0,w,l)
s=pygame.Surface((w,l))
s.fill(RED)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN:
r1=pygame.Rect(0,0,w,l)
s=pygame.Surface((w,l))
s.fill(RED)
r1=r1.move(event.pos)
screen.fill(CYAN)
screen.blit(s,r1)
pygame.display.update()
Quindi, dopo aver avviato il programma, fate la prova a cliccare in un punto qualsiasi con il pulsante sinistro del mouse, vedrete che il rettangolo si sposterà nella nuova posizione.
Collidepoint
In questo secondo esempio utilizzeremo il metodo collidepoint per verificare se abbiamo fatto clic all’interno del rettangolo rosso.
L’attributo pos serve a determinare la posizione, cioè le coordinate x e y, del clic effettuato con il mouse. Infatti event.pos[0] mi restituisce la coordinata x, mentre event.pos[1] mi restituisce la y.
Ecco quindi l’esempio completo:
import pygame, sys
pygame.init()
screen=pygame.display.set_mode((800, 600))
pygame.display.set_caption('Oggetto Rect')
CYAN=(0,255,255)
RED=(255,0,0)
r1=pygame.Rect(20,20,30,30)
s=pygame.Surface((30,30))
s.fill(RED)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN:
click = event.pos
if r1.collidepoint(click):
print("Hai cliccato il quadrato rosso")
else:
print ("Hai cliccato fuori")
screen.fill(CYAN)
screen.blit(s,r1)
pygame.display.update()
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