#python #audio #pygame
Вопрос:
Я только что запустил небольшой игровой проект и пытаюсь заставить его воспроизводить звук при каждом выстреле пули, но я продолжаю получать ту же ошибку:
pygame.error: mixer system not initialized
Я не понимаю, что я сделал неправильно, поэтому вот мой код:
import pygame, sys
from pygame.locals import *
theClock = pygame.time.Clock()
sound = pygame.mixer.Sound("bullet.mp3")
….
if event.type == KEYDOWN:
if event.key == K_SPACE and shot_count == 0:
sound.play()
shot_y = h-50
shot_x = x
elif event.type == K_SPACE and shot_count == 1:
shot_y_2 = h-50
shot_x_2 = x
print(h, ' ', shot_y, shot_count)
if event.type == KEYUP:
if event.key == K_SPACE and shot_count == 0:
resetShot = 0
elif event.type == K_SPACE and shot_count == 1:
resetShot = 0
Ответ №1:
Вам необходимо pygame.init()
перед использованием объектов микшера / звука.
Согласно документации, вы должны использовать звуковые файлы OGG или WAV.
Комментарии:
1. хорошо, я больше не получаю ошибку, но она не воспроизводит никакого звука
Ответ №2:
Я искал здесь и обнаружил, что pygame
загружаются только OGG и несжатые файлы WAV. Другая проблема заключается в том, что вы забыли инициализировать pygame.mixer
модуль.
pygame.mixer.init()
это самый простой способ инициализации pygame.mixer
модуля.
Для получения дополнительной информации перейдите по предыдущей ссылке.
Комментарии:
1. У меня та же проблема, что и при загрузке моего волнового файла в pygame.mixer.init(), но я продолжаю получать эту ошибку, аудиоустройство не найдено
Ответ №3:
Я делал игру в Тетрис до двух недель, и у меня была та же проблема! Что я сделал, так это вставил это перед воспроизведением звука, и это сработало.
pygame.mixer.init(44100, -16,2,2048)
Попробуйте сами и посмотрите, работает ли это! Я надеюсь, что это помогло
Ответ №4:
Этого достаточно
import pygame as pg
from pygame import mixer
pg.init()
#...
mixer.music.load('sounds/bgsound.mp3')
mixer.music.play(-1)
Ответ №5:
Я столкнулся с той же ошибкой в том же проекте при использовании pycharm в моей системе Linux.
Простой обходной путь — запустить sript в оболочке python или из IDLE (что практически одно и то же).
Если вы такой же пользователь Linux, как и я (я использую Ubuntu), просто откройте папку, содержащую скрипт в терминале, и запустите скрипт с помощью python, например:
python3 Space_Invaders.py
И он должен работать без каких-либо ошибок. Я попытался запустить код без инициализации микшера, используя python IDLE, и там тоже не обнаружил ошибок.