我正在用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
答案 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