Как я могу использовать переменные в имени файла изображения и циклы, чтобы открыть несколько изображений, используя Pygame, не загромождая код - PullRequest
0 голосов
/ 11 октября 2018
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

1 Ответ

0 голосов
/ 11 октября 2018

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

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...