如何在图片的文件名和循环中使用变量来使用 pygame 打开多张图片而不会弄乱代码


import easygui, sys, random, time, tkinter, pygame
Running = True
while Running is True:

创建屏幕并加载 11 张图片进行模拟,如何使用循环和变量来整理代码?每个.png文件之间的唯一区别是图像文件的frame_XX部分。我试图在文件名中实现变量,但它永远不会起作用。

pygame.init()
loading_screen = pygame.display.set_mode([600, 300])   
loading_screen.fill([0, 0, 0])
pygame.display.set_caption("Student Planner 2")
LoadBar1 = pygame.image.load("frame_00_delay-0.06s.png")
LoadBar2 = pygame.image.load("frame_01_delay-0.06s.png")
LoadBar3 = pygame.image.load("frame_02_delay-0.06s.png")
LoadBar4 = pygame.image.load("frame_03_delay-0.06s.png")
LoadBar5 = pygame.image.load("frame_04_delay-0.06s.png")
LoadBar6 = pygame.image.load("frame_05_delay-0.06s.png")
LoadBar7 = pygame.image.load("frame_06_delay-0.06s.png")
LoadBar8 = pygame.image.load("frame_07_delay-0.06s.png")
LoadBar9 = pygame.image.load("frame_08_delay-0.06s.png")
LoadBar10 = pygame.image.load("frame_09_delay-0.06s.png")
LoadBar11 = pygame.image.load("frame_10_delay-0.06s.png")

通过翻转所有 11 张图片的显示来创建加载屏幕动画,然后在循环结束时关闭程序,这里同样的问题:如何使用循环和变量来整理代码。

for looper in [1, 2, 3, 4, 5]:
loading_screen.blit(LoadBar1, (100, 150))
pygame.time.delay(20)
pygame.display.flip()
loading_screen.blit(LoadBar2, (100, 150))
pygame.time.delay(20)
pygame.display.flip()
loading_screen.blit(LoadBar3, (100, 150))
pygame.time.delay(20)
pygame.display.flip()
loading_screen.blit(LoadBar4, (100, 150))
pygame.time.delay(20)
pygame.display.flip()
loading_screen.blit(LoadBar5, (100, 150))
pygame.time.delay(20)
pygame.display.flip()
loading_screen.blit(LoadBar6, (100, 150))
pygame.time.delay(20)
pygame.display.flip()
loading_screen.blit(LoadBar7, (100, 150))
pygame.time.delay(20)
pygame.display.flip()
loading_screen.blit(LoadBar8, (100, 150))
pygame.time.delay(20)
pygame.display.flip()
loading_screen.blit(LoadBar9, (100, 150))
pygame.time.delay(20)
pygame.display.flip()
loading_screen.blit(LoadBar10, (100, 150))
pygame.time.delay(20)
pygame.display.flip()
loading_screen.blit(LoadBar11, (100, 150))
pygame.time.delay(20)
pygame.display.flip()
pygame.quit()
Running = False

LoadBar的初始化可以在循环中完成,也可以改为在列表中完成:

for i in range(11):
LoadBar[i] = pygame.image.load("frame_%02d_delay-0.06s.png" % i)

这样整个动画循环就可以使用循环访问LoadBar列表的嵌套for循环来完成:

for _ in range(5):
for loadbar in LoadBar:
loading_screen.blit(loadbar, (100, 150))
pygame.time.delay(20)
pygame.display.flip()

最新更新