我一直在试图模拟Pygame的代码跳,但一直没能成功地实现它。有10个维度10的矩形,我想这个矩形跳的时候,空间被压榨。我保持这个代码独立重力现在。
import pygame
pygame.init()
ScreenLenX = 1000
ScreenLenY = 500
win = pygame.display.set_mode((ScreenLenX, ScreenLenY))
pygame.display.set_caption("aman")
run = True
Xcord = 100
Ycord = 100
length = 10
height = 10
vel = 2
xmove = 1
ymove = 1
while run:
#pygame.time.delay(1)
for event in pygame.event.get():
print(event)
if event.type ==pygame.QUIT:
run = False
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_UP] and Ycord >= 0:
Ycord -= vel
if keys[pygame.K_DOWN] and Ycord <= ScreenLenY - height:
Ycord += vel
win.fill((0, 0, 0))
pygame.draw.rect(win, (255, 0, 0), (Xcord, Ycord, length, height))
keys = pygame.key.get_pressed()
pygame.display.update()
pygame.quit()
0,添加一个变量jump
和初始化主循环之前:
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
观看演示,我在那里应用的建议,您的代码:
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()