我想让我的角色在 pygame 中跳跃,但它不起作用

问题描述

我试图让我的角色跳跃,但它不起作用。因此,当我按 SPACE 时,y 位置应该递减以使我的播放器上升,当他到达顶部时,我想让它再次下降。 我不知道该说什么该网站让我更详细地描述问题来发布它,所以我在这里写字:)

这是现在的代码

import pygame
import time
import random
#variabile
velPlayer = 1
xPlayer = 100
yPlayer = 100

#initializare
pygame.init()

screen = pygame.display.set_mode((1000,1000))
pygame.display.set_caption("Joculet")

#fundal
def ecranAlb():
    screen.fill((255,255,255))

#player   
def player():
    global xPlayer,yPlayer
    isJump = False
    jumpCount = 10
    pygame.draw.rect(screen,(0,253),(xPlayer,yPlayer,15,15))
    keys = pygame.key.get_pressed()

    if keys[pygame.K_RIGHT] and xPlayer < 971:
        xPlayer += velPlayer
    if keys[pygame.K_LEFT] and xPlayer > 0:
        xPlayer -= velPlayer
    if not(isJump):
        if keys[pygame.K_UP] and yPlayer > 0:
            yPlayer -= velPlayer
        if keys[pygame.K_DOWN] and yPlayer < 970:
            yPlayer += velPlayer
        if keys[pygame.K_SPACE]:
            isJump = True
    else:
        if jumpCount >= -10:
            neg = 1
            if jumpCount < 0:
                neg = -1

            yPlayer = (jumpCount ** 2) * 0.5 * neg
            jumpCount -= 1
        else:
            isJump = False
            jumpCount = 10

#main loop   
running = True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    ecranAlb()
    player()
    pygame.display.flip()

pygame.quit()

解决方法

isJumpjumpCount 必须在全局命名空间中的应用程序循环之前初始化。使用 global statement 更改函数内全局命名空间中的变量:

isJump = False
jumpCount = 10

def player():
    global xPlayer,yPlayer,isJump,jumpCount 

    # [...]