如何在移动时删除此气球副本
这是我的代码
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)
并且如果我首先运行程序,那么气球循环首先执行,那时我无法控制箭头。
答案 0 :(得分:1)
您不能使用while
循环(以及任何长时间运行的函数或sleep()
)。
你必须只改变气球位置,让主while
点亮背景和其他元素(并做其他事情,如处理事件,制作其他动画等)。
或多或少:
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)