Добавить список для позиций мыши:
points = []
Добавить позицию в список при щелчке мыши:
if e.type == MOUSEBUTTONDOWN:
if e.button == 1:
points.append(e.pos)
Нарисуйте точки в al oop:
for pos in points:
draw.circle(screen,GREEN, pos, 10)
Если есть хотя бы 2 точки, то линии между точками можно нарисовать с помощью pygame.draw.lines()
:
if len(points) > 1:
draw.lines(screen, GREEN, False, points)
На основе вашего предыдущего вопроса , Я предлагаю следующее:
from pygame import *
init()
size = width, height = 650, 650
screen = display.set_mode(size)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
running = True
myClock = time.Clock()
points = []
# Game Loop
while running:
for e in event.get():
if e.type == QUIT:
running = False
if e.type == MOUSEBUTTONDOWN:
if e.button == 1:
points.append(e.pos)
if e.button == 3:
points = []
screen.fill(BLACK)
if len(points) > 1:
draw.lines(screen, GREEN, False, points)
for pos in points:
draw.circle(screen,GREEN, pos, 10)
display.flip()
myClock.tick(60)
quit()
В качестве альтернативы позиция щелчка может быть сохранена (prev_pos
) и использована в следующий раз , когда щелкают мышью, чтобы нарисовать линию.
Я не рекомендую это, потому что вы потеряете информацию о нажатых позициях:
from pygame import *
init()
size = width, height = 650, 650
screen = display.set_mode(size)
BLACK = (0, 0, 0)
GREEN = (0, 255, 0)
running = True
myClock = time.Clock()
prev_pos = None
# Game Loop
while running:
for e in event.get():
if e.type == QUIT:
running = False
if e.type == MOUSEBUTTONDOWN:
if e.button == 1:
if prev_pos != None:
draw.line(screen, GREEN, prev_pos, e.pos)
prev_pos = e.pos
draw.circle(screen, GREEN, e.pos, 10)
if e.button == 3:
prev_pos = None
screen.fill(BLACK))
display.flip()
myClock.tick(60)
quit()