주셔서 감사합니다,하지만 당신은 한 번에 여러 채널을 재생할 수 있습니다. 채널 이름을 지정하지 않으면 파이 게임은 사운드를 재생하기 위해 사용되지 않은 채널을 선택합니다. 기본적으로 파이 게임에는 8 개의 채널이 있습니다. Channel 객체를 생성하여 채널을 지정할 수 있습니다. 사운드를 무기한 반복 할 때, 당신은 loop = -1 인수로 사운드를 재생함으로써 그것을 할 수 있습니다. http://www.pygame.org/docs/ref/mixer.html
내장 모듈 시간, 특히 지정된 시간 동안 실행을 일시 중지하는 sleep() 함수를 사용하는 것이 좋습니다. 이는 사운드를 재생하기 전에 가능한 빨리 Sound를 재생하는 pygame.mixer 기능이 있고 동일한 채널에서 두 번째 사운드를 재생하려고 시도하면 첫 번째 사운드가 중지되어 두 번째 사운드가 재생되기 때문입니다. 따라서 천둥 소리가 완료되도록하려면 연주하는 동안 실행을 일시 중지하는 것이 가장 좋습니다. if 문 안쪽에 sleep() 행은 천둥 소리가 들리지 않으면 sleep() 행이 실행을 일시 중지하지 않기 때문에 sleep() 행을 넣으므로 루프가 다음 천둥에 매우 빠르게 반복됩니다. 소리, "가끔"보다 훨씬 더 자주 출력됩니다.
import pygame
import random
import time
import var
# initialize pygame.mixer
pygame.mixer.init(frequency = 44100, size = -16, channels = 1, buffer = 2**12)
# init() channels refers to mono vs stereo, not playback Channel object
# create separate Channel objects for simultaneous playback
channel1 = pygame.mixer.Channel(0) # argument must be int
channel2 = pygame.mixer.Channel(1)
# plays loop of rain sound indefinitely until stopping playback on Channel,
# interruption by another Sound on same Channel, or quitting pygame
channel1.play(var.rain_sound, loops = -1)
# plays occasional thunder sounds
duration = var.thunder_sound.get_length() # duration of thunder in seconds
while True: # infinite while-loop
# play thunder sound if random condition met
if random.randint(0,80) == 10:
channel2.play(var.thunder_sound)
# pause while-loop for duration of thunder
time.sleep(duration)
또한 'pygame.mixer.Channel.get_busy()'를 사용하여 특정 채널이 현재 소리를 재생 중인지 여부를 확인할 수 있습니다. – Isa