La funzione draw.polygon() di Pygame
La funzione draw.polygon() disegna un poligono in una superficie grafica con python tramite il modulo pygame.
pygame.draw.lines(obj, col, points, width)
Gli argomenti della funzione sono
- obj è il nome della superficie grafica in cui disegnare la figura geometrica.
- col è una tupla a tre elementi con i valori RGB che definisce il colore del poligono.
- points è una tupla contenente due o più coppie (x,y) che indicano le coordinate degli spigoli del poligono.
- width è un valore intero che indica lo spessore del bordo della figura in pixel. Se width=0 il poligono viene colorato anche all'intero.
Nota. Se il parametro width è maggiore di 0 la funzione produce lo stesso risultato della funzione draw.lines(). C'è però una differenza tra le due funzioni, draw.polygon() mi permette anche di colorare l'interno del poligono tramite il parametro width=0. Con draw.lines() non è possibile.
Un esempio pratico
In questo script disegno un poligono tramite draw.poligon() alla riga 6.
- import pygame
- pygame.init()
- finestra1 = pygame.display.set_mode((400,300))
- pygame.display.set_caption('Titolo della finestra')
- RED = (255,0,0)
- pygame.draw.polygon(FINESTRA1, RED, ((240,140),(220,120),(200,180)),0)
- running = True
- while running:
- for event in pygame.event.get():
- if event.type == QUIT:
- running = False
- pygame.display.update()
La prima linea spezzata comincia nel punto (240,140) a passa per i punti (220,120) e (200,180).
L'ultimo punto della sequenza (200,180) viene collegato automaticamente al primo punto (240,140) per chiudere l'area del poligono.
pygame.draw.polygon(FINESTRA1, RED, ((240,140),(220,120),(200,180)),0)
Il valore del parametro width è zero, quindi il poligono è colorato anche all'interno.
Ecco il risultato in output.
Se modifico l'ultimo parametro width portandolo da zero a cinque.
pygame.draw.polygon(FINESTRA1, RED, ((240,140),(220,120),(200,180)),5)
Il risultato in output è sempre lo stesso poligono con i soli lati colorati. L'area interna non è più colorata.
Il bordo della figura geometrica ha uno spessore di 5 pixel.
Quest'ultimo risultato posso raggiungerlo anche usando la funzione draw.lines().
E così via.