Добавьте переменную jump
и инициализируйте ее 0 перед основным циклом:
jump = 0
while run:
# [...]
Реагирует только на pygame.K_SPACE
, если игроку разрешено прыгать и оставаться на земле.Если это выполнено, тогда установите jump
на желаемую высоту «прыжка»:
if keys[pygame.K_SPACE] and Ycord == ScreenLenY - height:
jump = 300
Пока jump
больше 0, двигайте игрока вверх и уменьшайте jump
на ту же величину, в основном цикле.
Если игрок не прыгает, что позволяет ему упасть до рассвета, пока он не достигнет земли:
if jump > 0:
Ycord -= vel
jump -= vel
elif Ycord < ScreenLenY - height:
Ycord += 1
См. демонстрацию, где я применил предложения к вашему коду:
![](https://i.stack.imgur.com/XEAF8.gif)
import pygame
pygame.init()
ScreenLenX, ScreenLenY = (1000, 500)
win = pygame.display.set_mode((ScreenLenX, ScreenLenY))
pygame.display.set_caption("aman")
Xcord, Ycord = (100, 100)
length, height = (10, 10)
xmove, ymove = (1, 1)
vel = 2
jump = 0
run = True
clock = pygame.time.Clock()
while run:
#clock.tick(60)
for event in pygame.event.get():
print(event)
if event.type ==pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT] and Xcord <= ScreenLenX-length:
Xcord += vel
if keys[pygame.K_LEFT] and Xcord >= 0:
Xcord -= vel
if keys[pygame.K_SPACE] and Ycord == ScreenLenY - height:
jump = 300
if jump > 0:
Ycord -= vel
jump -= vel
elif Ycord < ScreenLenY - height:
Ycord += 1
win.fill((0, 0, 0))
pygame.draw.rect(win, (255, 0, 0), (Xcord, Ycord, length, height))
pygame.display.update()