python - 在 Pygame 中点击幻灯片

标签 python pygame

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

我尝试过各种类型的循环和迭代。我发现的一个解决方法是制作大量不同的 while 语句,例如“while intro1”进入“while intro2”,但是很麻烦。希望有更好的方法。

        #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


最佳答案

需要进行一些重组。首先,您将使用 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

关于python - 在 Pygame 中点击幻灯片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55975641/

相关文章:

python - 无法通过 pip 或 npm 安装软件包

python - 如何消除 matplotlib 创建的烛台图表中的差距?

python - 如何在项目/包名称中使用点 "."或下划线 "-"构建 python 项目?

python - 在不安装的情况下使用 Pygame

python - 如何旋转 Sprite 并向鼠标位置发射子弹?

Python:检测图像何时与另一图像碰撞

python - 在嵌套字典中搜索关键树

python - jupyter笔记本可以找到自己的文件名吗?

python - 无法使用 pip 安装 Pygame

python - 在 Kivy 中使用 sdl2 而不是 pygame