In questa lezione studieremo l’oggetto Rect, un oggetto geometrico astratto caratterizzato dalla posizione e dalla lunghezza dei lati.
Per creare un Rect si utilizza il costruttore Rect():
pygame.Rect(x,y,w,h) – dove x e y sono le coordinate dell’angolo in alto a sinistra, mentre w ed h sono la larghezza e l’altezza del rettangolo
pygame.Rect((x,y),(w,h)) – i parametri hanno lo stesso significato dell’esempio sopra.
Quindi ad esempio:
pygame.Rect(0,0,250,120) – Avrò un rettangolo posizionato nel punto (0,0) di larghezza 250 pixel e altezza 120.
Attributi oggetto Rect
L’oggetto Rect ha tanti attributi che possono essere utilizzati per muovere o allineare il rettangolo.
Supponiamo quindi che r1=pygame.Rect(20,50,250,120):
.left o anche .x – Indica la x del lato sinistro. Allora r1.left=20.
.right – Indica la x del lato destro. Allora r1.right=270 cioè x che è uguale a 20 + la larghezza del rettangolo 250.
.top o anche .y – Indica la y del lato superiore. Dunque r1.top=50.
.topleft – Indica le coordinate dell’angolo in alto a sinistra. Quindi r1.topleft=(20,50).
.topright – Indica le coordinate dell’angolo in alto a destra. Allora r1.topright=(270,50).
.bottom – Indica la y del lato inferiore. Dunque r1.bottom=50.
.bottomleft – Indica le coordinate dell’angolo in basso a sinistra. Allora r1.bottomleft=(20,170).
.bottomright – Indica le coordinate dell’angolo in basso a destra. Dunque r1.bottomright=(270,170).
.center – Indica le coordinate del centro del rettangolo. Allora x sarà la metà di 250 più 20, cioè 145, mentre y sarà la metà di 120 più 50, cioè 110. Dunque r1.center=(145,110).
.centerx – Indica la coordinata x del centro del rettangolo. Quindi per quanto spiegato prima r1.centerx=145.
.centery – Indica la coordinata y del centro del rettangolo. Allora r1.centery=110.
.midtop – Indica le coordinate al centro del lato superiore. Allora r1.midtop=(145, 50).
.midbottom – Indica le coordinate al centro del lato inferiore. Quindi r1.midbottom=(145, 170).
.midleft – Indica le coordinate al centro del lato sinistro. Dunque r1.midleft=(20, 110).
.midright – Indica le coordinate al centro del lato destro. Allora r1.midright=(270, 110).
.size – Indica le dimensioni, cioè la larghezza e l’altezza del rettangolo. Quindi r1.size=(250,120).
.width – Indica la larghezza del rettangolo. Allora r1.width=250.
.left – Indica l’altezza del rettangolo. Quindi r1.height=120.
Chi vuole può anche consultare la guida completa al link: https://www.pygame.org/docs/ref/rect.html.
Esempio
Realizziamo un semplice programma che al clic del mouse mi restituisce i valori degli attributi di Rect.
Come detto Rect è un oggetto astratto, quindi abbiamo bisogno di un oggetto fisico come la Surface, che rappresenta la porzione di schermo sulla quale disegnare per visualizzare ad esempio un rettangolo.
Quindi: r1=pygame.Rect(20,50,250,120) è l’oggetto astratto.
Dopo utilizziamo s=pygame.Surface((250, 120)) e screen.blit(s,r1) per ottenere l’oggetto fisico.
Facciamo quindi un semplice esempio:
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)
screen.fill(CYAN)
r1=pygame.Rect(20,50,250,120)
s=pygame.Surface((250, 120))
s.fill(RED)
screen.blit(s,r1)
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
print('x:', r1.left)
print('y:', r1.top)
print('midtop:', r1.midtop)
print('midbottom:', r1.midbottom)
print('midleft:', r1.midleft)
print('midright:', r1.midright)
print('right:', r1.right)
print('topleft:', r1.topleft)
print('topright:', r1.topright)
print('bottom:', r1.bottom)
print('bottomleft:', r1.bottomleft)
print('bottomright:', r1.bottomright)
print('center:', r1.center)
print('centerx:', r1.centerx)
print('centery:', r1.centery)
print('size:', r1.size)
print('width:', r1.width)
print('height:', r1.height)
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