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

为什么 pygame 精灵在 pygame 菜单中不能正常工作?

如何解决为什么 pygame 精灵在 pygame 菜单中不能正常工作?

我正在使用 pygame 菜单,据我所知,我无法在 pygame 菜单中使用精灵。我正在尝试创建一个类似于 galaga 或太空入侵者的敌人类。但是,我可以让敌人在我不使用 pygame 菜单的单独文件中工作。我认为这与我使用一个函数来启动我的游戏有关,但我需要这样做才能使菜单正常工作。

下面是我的文件中敌人无法正常工作的启动函数代码

def main_menu():
    menu = pygame_menu.Menu(
        height=900,theme=mytheme2,title='galaga',width=1400
    )
    menu.add.image(myimage2)
    menu.add.label('Welcome Player One.')
    menu.add.button('Click to start',start)
    menu.add.button('Controls',controls)
    menu.add.button('Rules',rules)
    menu.add.button('Quit the game',pygame_menu.events.EXIT)

    if __name__ == '__main__':
        menu.mainloop(surface)

main_menu()

下面是我在文件中创建的敌人类,它们可以正常工作。

class Aliens(pygame.sprite.Sprite):
    def __init__(self,x,y):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("img/alien" + str(random.randint(1,5)) + ".png")
        self.rect = self.image.get_rect()
        self.rect.center = [x,y]
        self.move_counter = 0
        self.move_direction = 1

    def update(self):
        self.rect.x += self.move_direction
        self.move_counter += 1
        if abs(self.move_counter) > 75:
            self.move_direction *= -1
            self.move_counter *= self.move_direction



#create Alien Bullets class
class Alien_Bullets(pygame.sprite.Sprite):
    def __init__(self,y):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("img/alien_bullet.png")
        self.rect = self.image.get_rect()
        self.rect.center = [x,y]

    def update(self):
        self.rect.y += 2
        if self.rect.top > screen_height:
            self.kill()
        if pygame.sprite.spritecollide(self,spaceship_group,False,pygame.sprite.collide_mask):
            self.kill()
            explosion2_fx.play()
            #reduce spaceship health
            spaceship.health_remaining -= 1
            explosion = Explosion(self.rect.centerx,self.rect.centery,1)
            explosion_group.add(explosion)

我曾尝试将两者结合起来,但它的功能并不相同,而且我不确定为什么或如何解决它。

解决方法

也许您的“开始”功能有问题。如果相同,如这个问题:How to make enemies in galaga?,则有几个可能的错误。第一:你调用函数

clock.tick(40)

两次,这不是必需的。 你也调用你的函数

    pause()
    End()
    kill()
    level_increase()

在每个游戏循环中。这是故意的吗?

我的建议是从一个较小的 pygame_menu 示例开始,然后逐步提高。 如果您的问题更具体地描述您所看到的实际问题,也会有所帮助。

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