Зацикливая кнопку мыши, чтобы нарисовать линии - PullRequest
3 голосов
/ 02 апреля 2019

Нужно рисовать линии, а не точки с помощью кнопки мыши

При щелчке мышью программа рисует точки, я предполагаю, что для рисования линий с нажатой кнопкой мыши необходим еще один цикл.


while keep_going:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            keep_going = False
        if event.type == pygame.MOUSEBUTTONDOWN:
            spot = event.pos
            pygame.draw.circle(screen, GREEN, spot, radius)
            pygame.display.update()

Я хотел бы рисовать линии вместо точек в моем окне.

1 Ответ

4 голосов
/ 02 апреля 2019

Используйте pygame.draw.lines, чтобы связать список точек линией.

Добавить текущую позицию мыши в список, если кнопка мыши отпущена:

if event.type == pygame.MOUSEBUTTONUP:
    points.append(event.pos)

Нарисуйте список точек, если в списке более 1 точки:

if len(points) > 1:
    pygame.draw.lines(screen, (255, 255, 255), False, points, width)

Нарисуйте «резинку» от последней точки в списке до текущей позиции мыши:

if len(points):
    pygame.draw.line(screen, (255, 255, 255), points[-1], pygame.mouse.get_pos(), width)

См. Простой пример:

run = True
width = 3
points = []
while run:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

        if event.type == pygame.MOUSEBUTTONUP:
            points.append(event.pos)

    screen.fill(0)
    if len(points) > 1:
        pygame.draw.lines(screen, (255, 255, 255), False, points, width)
    if len(points):
        pygame.draw.line(screen, (255, 255, 255), points[-1], pygame.mouse.get_pos(), width)
    pygame.display.flip()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...