在Pygame中点击幻灯片

时间:2019-05-03 18:53:21

标签: python pygame

我正在用pygame制作游戏,并希望展示一下简介。我的问题是我希望玩家能够点击每张幻灯片直到最后,然后才能过渡到游戏本身。目前,我有一个循环,可以立即浏览所有幻灯片。 有什么方法可以格式化此格式,以便播放器可以逐张单击幻灯片?谢谢!

我尝试了各种类型的循环和迭代。我发现的一项解决方法是制作大量不同的while语句,例如“ while简介1”进入“ while简介2”,但这非常麻烦。我希望有更好的方法。

        #introduction screen
        while intro:
            img1 = pygame.image.load("./sprites/img1.png")
            img2 = pygame.image.load("./sprites/img2.png")
            img3 = pygame.image.load("./sprites/img3.png")
            img4 = pygame.image.load("./sprites/img4.png")
            imgs = [img1, img2, img3, img4]
            display_surface = pygame.display.set_mode((0, 0))
            display_surface.blit(img1, (0, 0))
            pygame.display.update()
            events = pygame.event.get()
            for event in events:
                if event.type == pygame.MOUSEBUTTONUP:
                    for i in range(len(imgs)):
                        display_surface.blit(imgs[i], (0, 0))
                        i += 1
                        pygame.display.update()
                        if i >= 3:
                            intro = False
                            run = True


1 个答案:

答案 0 :(得分:3)

需要一些重新组织。首先,您将使用current_image跟踪正在播放的图像。在循环之前将其设置为0,这意味着我们将从第一个图像开始。

图像本身不会在每次循环中更改。它们只需要在循环之前加载一次。

for event in events:循环中的内容过多。在这里,您应该进行某些按键将要改变的最小改动。因此,在单击时,我们将current_image更改为增加1,仅此而已。

完成所有操作后,将图像显示在屏幕上并进行更新。希望这会有所帮助。

   #introduction screen
    current_image = 0

    img_names = ["./sprites/img1.png", "./sprites/img2.png", "./sprites/img3.png", "./sprites/img4.png"]
    imgs = [pygame.image.load(img) for img in img_names]

    display_surface = pygame.display.set_mode((0, 0))
    while intro:
        events = pygame.event.get()
        for event in events:
            if event.type == pygame.MOUSEBUTTONUP:
                current_image  +=1
        display_surface.blit(imgs[current_image], (0, 0))
        pygame.display.update()
        if current_image   >= 3:
            intro = False
            run = True