Skip to main content
 首页 » 编程设计

python之我怎样才能让我的船发射多发子弹

2025年05月04日14Renyi-Fan

好的,我正在为学校做这个项目。我应该制作太空入侵者类型的游戏。我已经完成了让我的船移动和开火的操作。现在的问题是,当我尝试进行多发射击时,它会删除​​之前发射的子弹并发射一颗新的子弹,这根本不是一个好地方。我怎样才能让它真正发射多发子弹?

while (running == 1): 
    screen.fill(white) 
    for event in pygame.event.get(): 
        if (event.type == pygame.QUIT): 
            running = 0 
        elif (event.type == pygame.KEYDOWN): 
            if (event.key == pygame.K_d): 
                dir = "R" 
                move = True 
            elif (event.key == pygame.K_a): 
                dir = "L" 
                move = True 
            elif (event.key == pygame.K_s): 
                dir = "D" 
                move = True 
            elif (event.key == pygame.K_w): 
                dir = "U" 
                move = True 
            elif (event.key == pygame.K_ESCAPE):  
                sys.exit(0) 
            elif (event.key == pygame.K_SPACE): 
                shot=True 
                xbul=xgun + 18 
                ybul=ygun 
            #if key[K_SPACE]: 
                #shot = True 
        if (event.type == pygame.KEYUP): 
            move = False 
 
    #OBJECT'S MOVEMENTS 
    if ((dir == "R" and xgun<460) and (move == True)): 
        xgun = xgun + 5 
        pygame.event.wait 
    elif ((dir == "L" and xgun>0) and (move == True)): 
        xgun = xgun - 5 
        pygame.event.wait 
    elif ((dir == "D" and ygun<660) and (move == True)): 
        ygun = ygun + 5 
        pygame.event.wait 
    elif ((dir == "U" and ygun>0) and (move == True)): 
        ygun = ygun - 5 
 
    screen.blit(gun, (xgun,ygun)) 
 
    #PROJECTILE MOTION 
    #key = pygame.key.get_pressed() 
 
    if shot == True: 
        ybul = ybul - 10 
        screen.blit(bullet, (xbul, ybul)) 
 
    if xbul>640: 
        shot=False 
 
    pygame.display.flip() 
    time.sleep(0.012) 

请您参考如下方法:

您只有一个项目符号的变量——xbul 和 ybul。如果您想要多个项目符号,那么您应该将每个项目符号都列成一个列表。您可以附加到每个列表以添加新项目符号,弹出以删除旧项目符号,并在绘制时遍历列表。