在pygame中进行精灵跳跃

2024-09-27 21:23:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我的alevel编程项目制作一个游戏,我遇到了一些麻烦。我很难让我的雪碧跳起来。我找到了一些告诉你如何做的代码和一个视频,我按照步骤做了,但它似乎不起作用?我已经开始(***)代码用于跳转的部分

def level1():
    global running, jumping1
    global x1, y1 , x2, y2, xChange1, yChange1, xChange2, yChange2, jump1, jump2, jumping1, jumping2, isJump

    while running:
        clock.tick(FPS)
        
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    xChange1 = -5
                if event.key == pygame.K_RIGHT:
                    xChange1 = 5
**************************************************************************************
                if not jumping1:
                    if event.key == pygame.K_UP:
                        jumping1 = True
                    else:
                        if jump1 >= -10:
                            y1 -= (jump1 **2) * 0.5
                            jump1 -= 1
                        else:
                            jump1 = 10
                            jumping1 = False
********************************************************************************
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                    xChange1 = 0


            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_a:
                    xChange2 = -5
                elif event.key == pygame.K_d:
                    xChange2 = 5
                elif event.key == pygame.K_w:
                    yChange2 = -5
                elif event.key == pygame.K_s:
                    yChange2 = 5
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_a or event.key == pygame.K_d:
                    xChange2 = 0
                elif event.key == pygame.K_s or event.key == pygame.K_w:
                    yChange2 = 0           

        x1 += xChange1
        x2 += xChange2
        y1 += yChange1
        y2 += yChange2

        y1 -= gravity1
        y2 -= gravity2
        
        screen.blit(game_image,(0,0))
        character1(x1,y1)
        character2(x2,y2)
        gameFloor(fx,fy)

        if x1 < 0:
            x1 = 0
        if x1 > WIDTH - Char1WIDTH:
            x1 = WIDTH - Char1WIDTH

        if y1 < 0:
            y1 = 0
        if y1 > HEIGHT - Char1HEIGHT - 50:
            y1 = HEIGHT - Char1HEIGHT - 50

        if x2 < 0:
            x2 = 0
        if x2 > WIDTH - Char2WIDTH:
            x2 = WIDTH - Char2WIDTH

        if y2 < 0:
            y2 = 0
        if y2 > HEIGHT - Char2HEIGHT-50:
            y2 = HEIGHT - Char2HEIGHT -50


            
        pygame.display.flip()

跳跃1预先设置为false,跳跃1设置为5


Tags: keyeventiftypepygamex1x2elif
1条回答
网友
1楼 · 发布于 2024-09-27 21:23:38

没有更多细节很难说,但是第一个else是否应该与if not jumping1:具有相同的缩进? 像这样:

if not jumping1:
    if event.key == pygame.K_UP:
        jumping1 = True
else:
    if jump1 >= -10:
        y1 -= (jump1 **2) * 0.5
        jump1 -= 1
    else:
        jump1 = 10
        jumping1 = False

相关问题 更多 >

    热门问题