如何在移动时移除pygame中的重复图像

2024-09-30 16:41:40 发布

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

如何在移动此气球的同时删除副本

enter image description here

这是我的密码

lead_x = 0
lead_y = 400
balloonR_x = 400
balloonR_y = 400
balloonP_x = 500
balloonP_y = 400
balloonR_move = 50
#balloonB_x = 550
#balloonB_Y = 400

lead_y_change = 0 

gameExit = False



while not gameExit:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gameExit = True
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                lead_y_change -= 10
            elif event.key == pygame.K_DOWN:
                lead_y_change += 10
        if event.type == pygame.KEYUP:
            lead_y_change = 0



    lead_y += lead_y_change
    gamedisplay.blit(bg, [0,0])
    gamedisplay.blit(bow,[lead_x, lead_y])
    while balloonR_y >= 50:
        gamedisplay.blit(red_balloon, [balloonR_x, balloonR_y])
        pygame.display.update()
        pygame.event.clear(balloonR_y)
        clock.tick(1)
        balloonR_y -= balloonR_move
    #gamedisplay.blit(red_balloon, [balloonR_x, balloonR_y])
    gamedisplay.blit(purple_balloon, [balloonP_x, balloonP_y])
    #gamedisplay.blit(blue_balloon, [balloonB_x, balloonB_y])
    pygame.display.update()

    clock.tick(20)

如果我先运行这个程序,气球循环首先执行,我就不能控制箭头了。在


Tags: eventmoveiftypechangepygame气球lead
1条回答
网友
1楼 · 发布于 2024-09-30 16:41:40

不能使用while循环(以及任何长时间运行的函数或sleep())。在

您只需更改baloon的位置,让mainwhile闪现背景和其他元素(并执行其他操作,如处理事件、制作其他动画等)

或多或少:

while not gameExit:

    #  - events  -

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gameExit = True
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                lead_y_change -= 10
            elif event.key == pygame.K_DOWN:
                lead_y_change += 10
        if event.type == pygame.KEYUP:
            lead_y_change = 0

    #  - updates (without draws)  -

    lead_y += lead_y_change

    if balloonR_y >= 50:
        balloonR_y -= balloonR_move

    #  - draws (without updates)  -

    gamedisplay.blit(bg, [0,0])
    gamedisplay.blit(bow,[lead_x, lead_y])

    gamedisplay.blit(red_balloon, [balloonR_x, balloonR_y])

    gamedisplay.blit(purple_balloon, [balloonP_x, balloonP_y])
    #gamedisplay.blit(blue_balloon, [balloonB_x, balloonB_y])
    pygame.display.update()

    clock.tick(20)

相关问题 更多 >