Это только проверка на 2 секунды при нажатии, вам нужно проверять каждый кадр. Перемещение if prev_pos != None:
из события l oop и изменение e.pos
на cur_pos
, казалось, почти помогло вам получить то, что вам нужно. После добавления немного здесь и там, я думаю, что получил то, что вы были после
from pygame import *
init()
size = width, height = 650, 650
screen = display.set_mode(size)
BLACK = (0, 0, 0)
RED = (255, 100, 94)
BLUE = (112, 219, 255)
GREEN = (138, 255, 142)
YELLOW = (255, 255, 158)
color = GREEN
running = True
myClock = time.Clock()
prev_pos = None
cur_pos = None
start_time = 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 cur_pos != None and prev_pos == None: #if clicked once and not twice
start_time = time.get_ticks()
prev_pos = cur_pos
print("start")
cur_pos = e.pos
if prev_pos == None: #if not clicked twice
cur_pos = e.pos
if e.button == 3:
if color == GREEN:
color = BLUE
elif color == BLUE:
color = RED
elif color == RED:
color = GREEN
if prev_pos != None: #when clicked twice, draw line
if time.get_ticks() - start_time <= 2000:
screen.fill(BLACK)
draw.line(screen, color, prev_pos, cur_pos)
draw.circle(screen, color, prev_pos, 5)
else: #after 2 seconds, reset pos of clicks, and clear screen
prev_pos = None
cur_pos = None
screen.fill(BLACK)
if cur_pos != None: #if clicked once, draw the circle
draw.circle(screen, color, cur_pos, 5)
display.flip()
myClock.tick(60)
quit()
if prev_pos != None and prev_prev_pos == None:
start_time = time.get_ticks()
prev_pos = cur_pos
print("start")
cur_pos = e.pos
if cur_pos != None and prev_pos == None:
prev_pos = cur_pos
if prev__prev_pos == None:
cur_pos = e.pos
и
if prev_prev_pos != None:
if time.get_ticks() - start_time <= 2000:
screen.fill(BLACK)
draw.line(screen, color, prev_pos, cur_pos)
draw.circle(screen, color, prev_pos, 5)
draw.circle(...)
else:
prev_pos = None
prev_prev_pos = None
cur_pos = None
screen.fill(BLACK)
from pygame import *
init()
size = width, height = 650, 650
screen = display.set_mode(size)
BLACK = (0, 0, 0)
RED = (255, 100, 94)
BLUE = (112, 219, 255)
GREEN = (138, 255, 142)
YELLOW = (255, 255, 158)
color = GREEN
running = True
myClock = time.Clock()
start_time = None
points = []
times = []
max_lines = 2
# Game Loop
while running:
screen.fill(BLACK) #clear the screen
for e in event.get():
if e.type == QUIT:
running = False
if e.type == MOUSEBUTTONDOWN:
if e.button == 1:
if len(points) < max_lines + 1: #if not max lines on screen
if len(points) > 0: #if there is already a point in list, move all across and add new pos to start
times.append(time.get_ticks())
points.append(points[-1])
for i in range(len(points)-2,-1,-1):
points[i] = points[i - 1]
points[0] = mouse.get_pos()
else: #else append first point
points.append(mouse.get_pos())
if e.button == 3:
if color == GREEN:
color = BLUE
elif color == BLUE:
color = RED
elif color == RED:
color = GREEN
for i in range(len(points)-1,-1,-1): #for every point in points
draw.circle(screen,color,points[i],5)
if i < len(points) - 1: #after second point, draw lines
draw.line(screen,color,points[i],points[i+1])
if time.get_ticks() - times[i - 1] > 2000: #check for seconds
del points[i + 1] #delete last point
del times[i - 1] #delete the time
display.flip()
myClock.tick(60)
quit()