libri-javascript-python

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

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