Как заставить воспроизводиться задний фон

Endermens

Новичок
Пользователь
Ноя 10, 2020
2
0
1
На фото - игровое меню в которое нужно вставить полученную анимацию из другого кода, анимация сделана путем раскадровки и проигрывается в цикле, помогите вставить ее в блок с Игровым меню на фото прикреплённом ниже .








import pygame
from pygame.sprite import Sprite
import sys

pygame.init()


class Flame(Sprite):

def __init__(self, images, time_interval):
super().__init__()
self.images = [pygame.image.load(f'images/{i}.jpg') for i in range(1, 61)]
self.image = self.images[0]
self.time_interval = time_interval
self.index = 0
self.timer = 0

def update(self, seconds):
self.timer += seconds
if self.timer >= self.time_interval:
self.image = self.images[self.index]
self.index = (self.index + 1) % len(self.images)
self.timer = 0


def create_images():
images = []
for i in range(4):
image = pygame.Surface((256, 256))
images.append(image)
return images


def main():
images = create_images()
a = Flame(images, 0.25)

# Main loop.
while True:
seconds = clock.tick(FPS) / 300.0

for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()

a.update(seconds)
screen.fill((230, 230, 230))
screen.blit(a.image, (0, 0))
pygame.display.update()


if __name__ == '__main__':
screen = pygame.display.set_mode((1920, 1080))
clock = pygame.time.Clock()
FPS = 60
main()






ФРАГМЕНТ МЕНЮ ИГРЫ НИЖЕ-ИЗ ОСНОВНОГО КОДА




class Menu:
## Покрытие False по-умолчанию
hovered = False
## Инициализация строк меню
def __init__(self, text, pos):
self.text = text
self.pos = pos
self.set_rect()
self.draw()
## Рисование и рендер
def draw(self):
self.set_rend()
screen.blit(self.rend, self.rect)
## Сам рендер
def set_rend(self):
self.rend = menu_font.render(self.text, True, self.get_color())
## Указание цветов (Покрытый\Не покрытый)
def get_color(self):
if self.hovered:
return (255, 255, 255)
else:
return (65, 105, 255)
## Рендер углов
def set_rect(self):
self.set_rend()
self.rect = self.rend.get_rect()
self.rect.topleft = self.pos
## Главное Меню
def mmenu():
## Пункты меню
menus = [Menu("NEW GAME", (870, 605)),
Menu("Help", (920, 655)),
Menu("AUTORS", (890, 705)),
Menu("EXIT", (920, 755))]
begin = True
screen.blit(mm, (0, 0))

## Рабочий цикл
while begin:
pygame.event.pump()
## Проверка пунктов меню
for menu in menus:
if menu.rect.collidepoint(pygame.mouse.get_pos()):
menu.hovered = True
else:
menu.hovered = False
menu.draw()
pygame.display.flip()
## Создал практически с нуля
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:# and event.button == 1: ## Небольшая правка
for menu in menus:
if menu.hovered and menu.text == "NEW GAME":
print("NEW GAME?")
click.play()
novel()
elif menu.hovered and menu.text == "Help":
print("Help?")
click.play()
helps()
elif menu.hovered and menu.text == "AUTORS":
print("AUTORS?")
click.play()
authors()
elif menu.hovered and menu.text == "EXIT":
begin = False
click.play()
pygame.quit()
##Анимация меню:
## Помощь
def helps():
screen.blit(hl, (0, 0))
hlp = True
while hlp: # s x y
####printText("Hello World", "DejaVuSans.ttf", 30, 10, 10, red)###
printText("Управление Игрой", "DejaVuSans.ttf", 30, 300, 10, green)
printText("Для продвижения вперед, нажмите пробел или клавишу \"Enter\".", "DejaVuSans.ttf", 30, 140, 30, green)
printText("Для выбора, воспользуйтесь мышью.", "DejaVuSans.ttf", 30, 140, 60, green)
printText("Это предварительная альфа версия, подробности", "DejaVuSans.ttf", 30, 140, 90, green)
printText("в файле \"ReadMe\", в папке с игрой", "DejaVuSans.ttf", 30, 140, 120, green)
###
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
click.play()
hlp = False
mmenu()
elif event.type == pygame.KEYDOWN:
click.play()
hlp = False
mmenu()
 

Вложения

  • Снимок экрана 2020-11-09 235234.jpg
    Снимок экрана 2020-11-09 235234.jpg
    122,2 КБ · Просмотры: 1
Последнее редактирование:

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
self.image_58 = pygame.image.load('images/58.jpg')
self.image_59 = pygame.image.load('images/59.jpg')
self.image_60 = pygame.image.load('images/60.jpg')





self.images = [self.image_1, self.image_2, self.image_3, self.image_4,self.image_5,self.image_6,self.image_7,self.image_8,self.image_9,self.image_10,self.image_11,self.image_12,self.image_13,self.image_14,self.image_15,self.image_16,self.image_17,self.image_18,self.image_19,self.image_20,self.image_21,self.image_22,self.image_23,self.image_24,self.image_25,self.image_26,self.image_27,self.image_28,self.image_29,self.image_30,self.image_31,self.image_32,self.image_33,self.image_34,self.image_35,self.image_36,self.image_37,self.image_38,self.image_39,self.image_40,self.image_41,self.image_42,self.image_43,self.image_44,self.image_45,self.image_46,self.image_47,self.image_48,self.image_49,self.image_50,self.image_51,self.image_52,self.image_53,self.image_54,self.image_55,self.image_56,self.image_57,self.image_58,self.image_59,self.image_60]
self.image = self.images[0]
Весь вот этот кусок и все что над ним, начиная с def __init__ ... super().__init__()
Можно переписать в
self.images = [pygame.image.load(f'images/{i}.jpg') for i in range(1, 61)]
 
  • Мне нравится
Реакции: Endermens

Endermens

Новичок
Пользователь
Ноя 10, 2020
2
0
1
Весь вот этот кусок и все что над ним, начиная с def __init__ ... super().__init__()
Можно переписать в
self.images = [pygame.image.load(f'images/{i}.jpg') for i in range(1, 61)]
Большое спасибо, что показали как уменьшить количество ненужных сток в коде, это облегчает работу, но основную проблему все еще не могу решить, как правильно заставить вон те все картинки проигрываться в цикле меню ниже, def mmenu(): ....
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
в отдельном потоке наверное
 

Форум IT Специалистов