Как я могу использовать переменные в имени файла изображения и циклы, чтобы открыть несколько изображений, используя Pygame, не загромождая код

1
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")

Создайте анимацию экрана загрузки, перевернув дисплей для всех одиннадцати изображений, затем закройте программу, когда цикл закончен, этот же вопрос здесь: как я могу использовать циклы и переменные, чтобы заглушить код.

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
Теги:
for-loop
image
pygame
variables

1 ответ

1
Лучший ответ

Ваша инициализация LoadBar может выполняться в цикле и в списке:

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

так что весь цикл анимации может быть сделан с вложенным for цикла, который перебирает в LoadBar список:

for _ in range(5):
    for loadbar in LoadBar:
        loading_screen.blit(loadbar, (100, 150))
        pygame.time.delay(20)
        pygame.display.flip()
  • 0
    Спасибо! Никогда бы не подумал об этом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню