如何解决为什么 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 举报,一经查实,本站将立刻删除。