Почему не воспроизводится музыка в Pygame?

Рейтинг: 1Ответов: 1Опубликовано: 07.02.2023

Пытался уже всеми способами, она просто не выводится.

import pygame

clock = pygame.time.Clock()
weight = 1200
height = 640
pygame.init()
display = pygame.display.set_mode((weight,height))
pygame.display.set_caption("Elinder Game")
avatar = pygame.image.load("images/avatar.png").convert()
pygame.display.set_icon(avatar)
background = pygame.image.load("images/bg.png").convert_alpha()
background1 = pygame.image.load("images/bg1.png").convert_alpha()
player_stay = pygame.image.load("images/cat/catstay.png").convert_alpha()
background_music = pygame.mixer.music.load("sounds/background.mp3")
pygame.mixer.music.set_volume(1)
text = pygame.font.Font("fonts/font.otf", 10)
text_surface = text.render("Game by rmkhv", True, (255,255,255))
walk_right = [
    pygame.image.load("images/cat/catrunright1.png").convert_alpha(),
    pygame.image.load("images/cat/catrunright2.png").convert_alpha(),
    pygame.image.load("images/cat/catrunright3.png").convert_alpha(),
    pygame.image.load("images/cat/catrunright4.png").convert_alpha(),
    pygame.image.load("images/cat/catrunright5.png").convert_alpha(),
    pygame.image.load("images/cat/catrunright6.png").convert_alpha(),
]
walk_left = [
    pygame.image.load("images/cat/catrunleft2.png").convert_alpha(),
    pygame.image.load("images/cat/catrunleft3.png").convert_alpha(),
    pygame.image.load("images/cat/catrunleft4.png").convert_alpha(),
    pygame.image.load("images/cat/catrunleft5.png").convert_alpha(),
    pygame.image.load("images/cat/catrunleft6.png").convert_alpha(),
    clock.tick(10)
]
goblin_stay = [
    pygame.image.load("images/goblin/Sprite-0002.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0003.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0004.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0005.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0006.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0007.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0008.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0009.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0010.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0011.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0012.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0013.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0014.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0015.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0016.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0017.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0018.png").convert_alpha(),
    pygame.image.load("images/goblin/Sprite-0019.png").convert_alpha()
]
goblin_attack_right = [
    pygame.image.load("images/goblin/Goblin_attack_right1.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_attack_right2.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_attack_right3.png").convert_alpha(),
]
goblin_attack_left = [
    pygame.image.load("images/goblin/Goblin_attack_left1.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_attack_left1.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_attack_left1.png").convert_alpha(),
]
goblin_run_right = [
    pygame.image.load("images/goblin/Goblin_run_right1.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_right2.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_right3.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_right4.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_right5.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_right6.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_right7.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_right8.png").convert_alpha()
]
goblin_run_left = [
    pygame.image.load("images/goblin/Goblin_run_left1.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_left2.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_left3.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_left4.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_left5.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_left6.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_left7.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin_run_left8.png").convert_alpha(),
    clock.tick(10)
]
goblin_death = [
    pygame.image.load("images/goblin/Goblin._death1.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin._death2.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin._death3.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin._death4.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin._death5.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin._death6.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin._death7.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin._death8.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin._death9.png").convert_alpha(),
    pygame.image.load("images/goblin/Goblin._death10.png").convert_alpha()
]


goblin_x = 600
goblin_y = 490
player_anim = 0
goblin_anim = 0
bg_x = 0
text_x = 0
player_speed = 2
playerx = 100
playery = 522
camera_x = 0
camera_y = 0
jump = False
jump_count = -7
enemy_near = False

running = True
while running:
    pygame.mixer.music.play()
    display.blit(background, (camera_x,camera_y))
    display.blit(text_surface,(500,0))
    if goblin_anim == 17 or goblin_anim == 7:
        goblin_anim = 0
    else:
        goblin_anim += 1
    keys = pygame.key.get_pressed()
    if keys[pygame.K_RIGHT]:
        display.blit(walk_right[player_anim], (playerx, playery))
        bg_x -= 10
        if bg_x < -1250:
            bg_x = -5
        text_x -= 20 
    elif keys[pygame.K_LSHIFT]:
        display.blit(walk_left[player_anim], (playerx, playery))
    elif keys[pygame.K_RSHIFT]:
        display.blit(walk_right[player_anim], (playerx, playery))
        bg_x -= 15
        if bg_x < -1250:
            bg_x = -5
        text_x -= 25
    elif keys[pygame.K_LEFT]:
        display.blit(walk_left[player_anim], (playerx, playery))
    else:
        display.blit(player_stay, (playerx, playery))
    
    if keys[pygame.K_RIGHT] and playerx < 1000:
        playerx += player_speed
    elif keys[pygame.K_LEFT] and playerx > 50:
        playerx -= player_speed
    elif keys[pygame.K_LSHIFT] and playerx > 50:
        playerx -= player_speed + 3
    elif keys[pygame.K_RSHIFT] and playerx < 1000:
        playerx += player_speed + 3
    if player_anim == 4 or player_anim == 2: 
        player_anim = 0
    else:
        player_anim += 1

    if not jump:
        if keys[pygame.K_UP]:
            jump = True
    else:
        if jump_count <= 7:
            if jump_count < 0:
                playery -= (jump_count ** 2) // 2
            else:
                playery += (jump_count ** 2) // 2
            jump_count += 1
        else:
            jump = False
            jump_count = -7

    if goblin_x == 0:
        goblin_x = 1200
    goblin_x -= 2
    if goblin_x < 1200:
        display.blit(goblin_run_left[goblin_anim], (goblin_x,goblin_y))
    else:
        display.blit(goblin_stay[goblin_anim], (goblin_x,goblin_y))

    display.blit(background1, (0,0))

    player_rect = walk_left[0].get_rect(topleft=(playerx,playery))
    goblin_rect = goblin_stay[0].get_rect(topleft=(goblin_x, goblin_y))

    # if player_rect.colliderect(goblin_rect)^
    pygame.display.update()
    for exitt in pygame.event.get():
        if exitt.type == pygame.QUIT:
            running = False
            pygame.quit()

    clock.tick(60)

Ответы

▲ 0

Получается что длительный файл воспроизводится, а коротенький не успевает.

Попробуйте так:

...

pygame.mixer.music.play(loops=-1)                  # <---- +++
while running:
#    pygame.mixer.music.play()                     # ---  

...