Как я могу отобразить гладкую полосу загрузки в Pygame? - PullRequest
0 голосов
/ 03 февраля 2019

В настоящее время я работаю над игрой в pygame.Я хочу создать загрузочное окно с панелью загрузки, как в программном обеспечении GIMP, но я действительно не знаю, как я могу это оптимизировать ... Вообще

Так что это, очевидно, часть моего кода,это не очень хорошо работает.Можете ли вы помочь мне?

...

screen = pygame.display.set_mode((640, 480), pygame.NOFRAME)
where = (120,360)
While in progress = true:
   If 1/a < 0.25
   screen.blit(Load0, where)
   If 1/a < 0.50
   screen.blit(Load1,where)
   #... ( it's the same for <0.75 and = 1 )
   pygame.display.update()
game()

Но это делает плохую загрузочную панель с повторным воспроизведением ... Можете ли вы помочь мне сделать ее действительно более оптимизированной и более плавной?
PS: у меня 350 элементовзагрузить

1 Ответ

0 голосов
/ 03 февраля 2019

Упростите вещи и нарисуйте столбик из 2 прямоугольников.

Создайте функцию, которая рисует столбец.Функция рисует тонкий внешний прямоугольник и заполненный внутренний прямоугольник.Длина внутреннего прямоугольника зависит от прогресса.progress - это значение в диапазоне [0, 1].Если это 0, то никакая внутренняя черта не рисуется.Если он равен 1, то внутренний стержень завершен:

def DrawBar(pos, size, borderC, barC, progress):

    pygame.draw.rect(screen, borderC, (*pos, *size), 1)
    innerPos  = (pos[0]+3, pos[1]+3)
    innerSize = ((size[0]-6) * progress, size[1]-6)
    pygame.draw.rect(screen, barC, (*innerPos, *innerSize))

Определить параметры положения и цвета для стержня:

barPos      = (120, 360)
barSize     = (200, 20)
borderColor = (0, 0, 0)
barColor    = (0, 128, 0)

Определить максимальное количество элементов:

max_a = 350

Когда вы рисуете гриф, то текущий прогресс равен a/max_a:

DrawBar(barPos, barSize, borderColor, barColor, a/max_a)

...