微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pygame 创造无限数量的敌人

如何解决Pygame 创造无限数量的敌人


class Enemy:
    def __init__(self,x,y):
        self.x = x
        self.y = y
        self.speedx = 10
        self.speedy = 10
        self.randomint = random.randint(0,3)

    def draw(self,screen):
        screen.blit(enemyImage,(self.x,self.y))

    def move(self):
        if self.randomint == 0:
                self.x -= self.speedx
                self.y -= self.speedy
        if self.randomint == 1:
                self.x += self.speedx
                self.y -= self.speedy
        if self.randomint == 2:
                self.x -= self.speedx
                self.y += self.speedy
        if self.randomint == 3:
                self.x += self.speedx
                self.y += self.speedy
        if self.x == 0 or self.x == 768:
            self.speedx = -self.speedx
        if self.y == 0 or self.y == 568:
            self.speedy = -self.speedy

def drawGame():
    screen.fill((255,255,255))
    robot.draw(screen)
    for bullet in robot.bullets:
        bullet.drawBullet()
    for enemy in enemies:
        enemy.draw(screen)
    pygame.time.delay(30)
    pygame.display.update()

robot = Player(400,300)
enemies = []

running = True
while running:
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False 


    enemy = Enemy(400,200)

    enemies.append(enemy)
    for enemy in enemies:
        enemy.move()

    userInput = pygame.key.get_pressed()
    robot.shoot()
    robot.movePlayer(userInput)

    drawGame()

我认为这部分代码对确定我的问题很有用。运行此代码会在指定的 x 和 y 值处无限生成敌人。由于我只调用 Enemy 类的一个实例,我认为只有一个敌人会以随机移动方向生成。为什么会发生这种情况?谢谢

解决方法

您的问题似乎是由在您拥有的“运行时:”循环中调用敌人类引起的,这意味着对于该游戏循环的每次迭代,它都会无休止地生成敌人。调用敌人类并将其附加到该循环之外的列表中应该可以解决问题

robot = Player(400,300)
enemy = Enemy(400,200)
enemies = []
enemies.append(enemy)

running = True
while running:
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False 


    
    for enemy in enemies:
        enemy.move()

    userInput = pygame.key.get_pressed()
    robot.shoot()
    robot.movePlayer(userInput)

    drawGame()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。