Вы должны update
ваш экран каждый раз, когда вы рисуете или делаете что-то на экране. Итак, поместите эту строку под свой первый цикл while.
pygame.display.flip()
В вашем состоянии вы проверяли x и y, а не положение мыши.
if click[0] == 1 and x in range(30) and y in range (30):
Проверьте положение мыши в range(90)
, потому что у вас есть три прямоугольника и 30x30
.
if click[0] == 1 and mouse[0] in range(90) and mouse[1] in range (90):
Затем установите прямоугольную начальную позицию, чтобы заполнить точку мыши.
rect_x = 30*(mouse[0]//30) # set start x position of rectangular
rect_y = 30*(mouse[1]//30) # set start y position of rectangular
Вы можете редактировать свой код с этим.
while running:
pygame.display.flip()
event = pygame.event.poll()
#found in what position my mouse is
if event.type == pygame.QUIT:
running = 0
elif event.type == pygame.MOUSEMOTION:
print("mouse at (%d, %d)" % event.pos)
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
#mouse click
if click[0] == 1 and mouse[0] in range(90) and mouse[1] in range (90):
'''
rect_x = 30*(0//30) = 0
rect_y = 30*(70//30) = 60
'''
rect_x = 30*(mouse[0]//30) # set start x position of rectangular
rect_y = 30*(mouse[1]//30) # set start y position of rectangular
pygame.draw.rect(screen, red, (rect_x, rect_y , 30 , 30)) # rectangular (height, width), (30, 30)