はじめに
pygameというライブラリを用いて、
指定した時間が経過した後音楽を流すという、いわゆるタイマーのようなプログラムを作成としたとき、
エラーメッセージも表示されず、音楽も流れないという不具合が出た。
その解決法について書いていく。
環境
Python 3.6.8
pygame 1.9.6
結論
pygame.mixer.music.play()
によって音楽が出力されるとき、
time.sleep()
で音楽を再生する時間だけプログラムの実行に遅延を発生させることで音楽が流れるようになった。
作成したコード
問題が起きたコード
# 音楽を再生するプログラムを作成する
import pygame
import time
react_time = int(input("何秒後に音楽を鳴らすかセットしてください >>"))
print(react_time)
time.sleep(react_time)
pygame.mixer.init()
pygame.mixer.music.load("BGM.mp3")
pygame.mixer.music.play()
print("music play")
というコードを実行し、ターミナルで仮に3と入力するとき、
何秒後に音楽を鳴らすかセットしてください >>3
3
music play
という結果だけが出力され、音楽は流れない。
問題解決したコード
pygame.mixer.music.play()
の次に、time.sleep()
によって遅延を発生させることで、
音楽が流れるようになった。
import pygame
import time
react_time = int(input("何秒後に音楽を鳴らすかセットしてください >>"))
print(react_time)
time.sleep(react_time)
pygame.mixer.init()
pygame.mixer.music.load("BGM.mp3")
pygame.mixer.music.play()
time.sleep(10) # time.sleep()で処理終了までの時間を確保する
print("music play")
参考
pythonのpygameで音が鳴らない
https://teratail.com/questions/173534