并非所有的子弹都在射击

时间:2016-01-20 21:21:56

标签: python pygame

感谢这个网站上的人们的帮助,我已经设法在我的平台游戏中获得一些子弹。火持续不断地垂直移动直到撞到地板然后它们消失。但是,我想在该级别添加水平射击子弹,并且我完成了与我的垂直子弹完全相同的代码,但它只发射一个并且不会发射任何其他水平子弹。它发射一个水平子弹,进入我的屏幕边界,然后没有其他子弹来到它后面。任何帮助都会受到重视!

class VerticalBullets(pygame.sprite.Sprite):
    def __init__(self,x,y):
        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.image.load("Images/bullet.png")
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y

    def update(self):
        self.rect.y += 7

        if self.rect.y > 520:
            bullet_list_v.empty()

class HorizontalBullets(pygame.sprite.Sprite):
    def __init__(self,x,y):
        pygame.sprite.Sprite.__init__(self)

        bullet_image = pygame.image.load("Images/bullet.png")
        self.image = pygame.transform.rotate(bullet_image,-90)
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y

    def update(self):
        self.rect.x -= 5

        if self.rect.x < 30:
            bullet_list_h.empty()

def main3():
    TrapList.empty()
    TrapList.add(trap4)
    player.hspeed = 0
    player.rect.x,player.rect.y = 50,0

    bullet_list_v.empty()
    bullet_list_h.empty()

    FiringBullet = pygame.USEREVENT + 1
    pygame.time.set_timer(FiringBullet, 1500)

    GameExit = False

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

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    player.move(-player.speed,0)
                if event.key == pygame.K_RIGHT:
                    player.move(player.speed,0)
                if event.key == pygame.K_UP:
                    player.move(0,-player.Jump)

            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT:
                    player.move(player.speed,0)
                if event.key == pygame.K_RIGHT:
                    player.move(-player.speed,0)
                if event.key == pygame.K_UP:
                    player.move(0,0)

            if event.type == FiringBullet:
                bullet = VerticalBullets(400,200)
                bullet2 = VerticalBullets(500,200)
                bullet3 = VerticalBullets(625,200)
                hbullet = HorizontalBullets(700,400)
                bullet_list_v.add(bullet)
                bullet_list_v.add(bullet2)
                bullet_list_v.add(bullet3)
                bullet_list_h.add(h_bullet)

        screen.fill(BLACK)
        level3.update()

        for eachbullet in bullet_list_v:
            bullet_list_v.draw(screen)
            bullet_list_v.update()

        for eachbullet in bullet_list_h:
            bullet_list_h.draw(screen)
            bullet_list_h.update()

        if player.rect.y < 0:
            NextLevel3()

        TrapList.draw(screen)    
        trampoline.render()
        playergroup.update()
        playergroup.draw(screen)
        player.level_3_collisions(BlockListDirt2)
        pygame.display.update()
        clock.tick(60)

1 个答案:

答案 0 :(得分:0)

尝试更改:

bullet_list_h.add(h_bullet)

要:

bullet_list_h.add(hbullet)

确保您添加刚刚创建的水平项目符号,而不是未声明的项目符号。