Это вопрос Отступ . Ваша игра отстает, потому что вы рисуете в событии l oop, а не в приложении l oop. Обратите внимание, что событие l oop выполняется один раз для каждого события, которое происходит (например, при нажатии кнопки или перемещении мыши). Приложение l oop выполняется непрерывно.
Сдвиг кода, который обновляет объекты, и dr aws сцена из события l oop в приложение, чтобы решить проблему:
while run:
pygame.time.delay(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
# INDENTATION !
# move from event loop to application loop
#<--|
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and x > vel:
x -= vel
if keys[pygame.K_RIGHT] and x < 1000 - width:
x += vel
if not isJump:
if keys[pygame.K_UP] and y > vel:
y -= vel
if keys[pygame.K_DOWN] and y < 1000 - height - vel:
y += vel
if keys[pygame.K_SPACE]:
isJump = True
else:
if jumpCount >= -10:
neg = 1
if jumpCount < 0:
neg = -1
y -= (jumpCount ** 2) * 0.5 * neg
jumpCount -= 1
else:
isJump = False
jumpCount = 10
win.fill((0, 0, 0))
pygame.draw.rect(win, (255, 0, 0), (x, y, width, height))
pygame.display.update()