Почему круг не останавливается при касании линии Python

почему в данном коде круг не останавливается при касании линии? если кто знает как сделать остановку при касании земли то напишите пожалуйста.

import pygame

pygame.init()

FPS = 30
 
x = 300
y = 200

xL = 200
xL2 = 400
yL = 300

sc = pygame.display.set_mode((600, 400))
clock = pygame.time.Clock()
pygame.display.update()

speedDown = 0 

while True:
    sc.fill((255,255,255))

    clock.tick(FPS)

    pygame.draw.circle(sc,(0,0,255),(x,y), 20, 0)
    pygame.draw.line(sc,(0,0,0),(xL,yL),(xL2,yL),5)

    for i in pygame.event.get():
        if i.type == pygame.QUIT:
            exit()
 
    keys = pygame.key.get_pressed()
    
    if y == yL:
       speedDown = 0
       y += 5
    else:
       speedDown += 1
       y += speedDown  

    pygame.display.update() 

Ответы (1 шт):

Автор решения: dIm0n

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

import pygame

pygame.init()

FPS = 30
 
x = 300
y = 200

xL = 200
xL2 = 400
yL = 300

sc = pygame.display.set_mode((600, 400))
clock = pygame.time.Clock()
pygame.display.update()

speedDown = 0 

while True:
    sc.fill((255,255,255))

    clock.tick(FPS)

    pygame.draw.circle(sc,(0,0,255),(x,y), 20, 0)
    pygame.draw.line(sc,(0,0,0),(xL,yL),(xL2,yL),5)

    for i in pygame.event.get():
        if i.type == pygame.QUIT:
            exit()
 
    keys = pygame.key.get_pressed()
    
    if y > yL:
       y -= 1
    else:
       y += 1  

    pygame.display.update() 

Тест https://repl.it/repls/VirtuousThirstyLint

→ Ссылка