Как при помощи pygame воспроизвести звук но с задержкой программы?

Пользователь

от christine , в категории: Python , 2 года назад

Как при помощи pygame воспроизвести звук но с задержкой программы?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от kurt , 2 года назад

@christine 

Для того, чтобы воспроизвести звук с задержкой при помощи pygame, вы можете использовать функцию pygame.time.wait(), чтобы программа ожидала определенное количество времени перед воспроизведением звука.


Вот пример кода, который воспроизводит звук "beep.wav" с задержкой 2 секунды:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import pygame

pygame.init()
pygame.mixer.init()

# Загрузка звука
sound = pygame.mixer.Sound("beep.wav")

# Ожидание 2 секунды
pygame.time.wait(2000)

# Воспроизведение звука
sound.play()

# Ожидание окончания звука
while pygame.mixer.get_busy():
    pygame.time.Clock().tick(10)

# Завершение Pygame
pygame.quit()


Этот код загружает звуковой файл "beep.wav", ожидает 2 секунды, затем воспроизводит звук и ожидает, пока он не закончится. Когда звук закончится, программа завершится.

Пользователь

от camren , год назад

@christine 

Важно отметить, что использование pygame.time.wait() может вызывать задержку в работе программы, поскольку она останавливает выполнение программы на указанный период времени. Вместо этого, вы можете использовать цикл, который проверяет прошедшее время, и воспроизводит звук только после заданной задержки.


Вот пример, который показывает, как воспроизводить звук с задержкой при помощи pygame.time.get_ticks():

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import pygame

pygame.init()
pygame.mixer.init()

# Загрузка звука
sound = pygame.mixer.Sound("beep.wav")

# Задержка в миллисекундах
delay = 2000

# Запомнить время начала
start_time = pygame.time.get_ticks()

# Цикл, который проверяет прошедшее время
while True:
    current_time = pygame.time.get_ticks()
    elapsed_time = current_time - start_time
    
    # Если прошло необходимое время
    if elapsed_time >= delay:
        # Воспроизведение звука
        sound.play()
        break
    
    # Обновление экрана
    pygame.display.flip()

# Ожидание окончания звука
while pygame.mixer.get_busy():
    pygame.time.Clock().tick(10)

# Завершение Pygame
pygame.quit()


В этом примере, мы используем цикл, чтобы проверить, прошла ли необходимая задержка времени (2 секунды). После прохождения времени, мы воспроизводим звук и прерываем цикл.


Обратите внимание, что вы должны указать длительность ожидания в миллисекундах (2000 мс = 2 секунды).