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.

Banner Pubblicitario

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.

Banner pubblicitario

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

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