La funzione draw.lines() di pygame
La funzione draw.lines() traccia una seguenza di linee sullo schermo in python tramite il modulo pygame.
pygame.draw.lines(obj, col, union, punti, width)
Gli argomenti della funzione sono
- obj è il nome della superficie in cui visualizzare le linee
- col è una tupla a tre elementi con i valori RGB per definire il colore delle linee
- union è un valore booleano, se è vero (True) congiunge l'ultimo punto della serie con il primo.
- punti è una tupla contenente due o più coppie (x,y) che indicano le coordinate dei punti sulla linea spezzata, dal primo all'ultimo.
- width è un valore intero che definisce lo spessore della linea in pixel.
Nota. La funzione è molto simile a un'altra pigame.draw.line(). C'è però una differenza, draw.line() traccia una sola linea tra due punti mentre draw.lines ne traccia più di una usando una sola riga di codice.
Un esempio pratico
In questo script disegno tre linee di colore rosso con la funzione draw.lines() 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.lines(FINESTRA1, RED, False, ((200,120),(220,100), (240,130),(230,140)),5)
- running = True
- while running:
- for event in pygame.event.get():
- if event.type == QUIT:
- running = False
- pygame.display.update()
La linea spezzata comincia nel punto (210,120) a passa per i punti (220,100), (240,130) e (230,140).
Il valore del parametro union è False, quindi non c'è una linea tra l'ultimo punto e il primo.
pygame.draw.lines(FINESTRA1, RED, False, ((200,120),(220,100), (240,130),(230,140)),5)
L'ultimo parametro definisce lo spessore a 5 pixel.
Ecco il risultato in output.
Ora modifico il codice portando il valore del parametro union da False a True.
pygame.draw.lines(FINESTRA1, RED, True, ((200,120),(220,100), (240,130),(230,140)),5)
Il risultato in output è una linea spezzata chiusa.
Tra l'ultimo punto e il primo viene tracciata una linea di chiusura.
Quest'ultimo risultato posso ottenerlo anche usando la funzione draw.polygon().
E così via.