4-8 Pygameの音声
同人誌について
この連載は、同人誌『PythonとPygameで作る レトロ風RPG 全コード』を一部抜粋して編集したものです。
同人誌本編には、ゲーム本体のソースコードや、各種のサンプルコード、Windowsで実行できるEXEファイルが付属しています。PDFで288ページの本になります。ぜひ、こちらもご購入ください(2024-03-10:ver1.0.3 に更新)。
音声の例
音声の例を示します。
「B」キーを押すと、バトルBGMを読み込んで再生します。「F」キーを押すと、フィールドBGMを読み込んで再生します。「D」キーを押すとダメージ音のSEが鳴ります。
音声には、BGMとSEの2種類があります。BGMは、その場で読み込んで再生をおこないます。新しいファイルを読み込んで再生すると、BGMが切り替わります。SEは、事前に複数読み込んでおき、必要に応じて再生します。
「example_pygame/audio.py」を示します。
import pygame
def main():
pygame.init() # Pygameを初期化
pygame.display.set_mode((800, 600)) # 画面作成
running = True # 実行継続フラグ
p_battle = "audio/maou_bgm_8bit18.mp3" # バトルBGM
p_field = "audio/maou_bgm_8bit01.mp3" # フィールドBGM
p_damage = "audio/maou_se_8bit22.wav" # ダメージSE
se = pygame.mixer.Sound(p_damage) # SE読み込み
while running:
for event in pygame.event.get(): # イベント
if event.type == pygame.QUIT: running = False # 終了
if event.type == pygame.KEYDOWN: # キー押下
if event.key == pygame.K_b: # バトル
pygame.mixer.music.load(p_battle) # BGM読み込み
pygame.mixer.music.play(loops=-1) # BGM再生
if event.key == pygame.K_f: # フィールド
pygame.mixer.music.load(p_field) # BGM読み込み
pygame.mixer.music.play(loops=-1) # BGM再生
if event.key == pygame.K_d: # ダメージ
se.play() # SE再生
pygame.quit()
if __name__ == "__main__":
main()
まずは『Pygame』の初期化処理です。
import pygame
def main():
pygame.init() # Pygameを初期化
pygame.display.set_mode((800, 600)) # 画面作成
running = True # 実行継続フラグ
ファイル パスの作成と、SEの読み込みです。
p_battle = "audio/maou_bgm_8bit18.mp3" # バトルBGM
p_field = "audio/maou_bgm_8bit01.mp3" # フィールドBGM
p_damage = "audio/maou_se_8bit22.wav" # ダメージSE
se = pygame.mixer.Sound(p_damage) # SE読み込み
メイン ループの中で、音声の切り替えをおこないます。
while running:
for event in pygame.event.get(): # イベント
if event.type == pygame.QUIT: running = False # 終了
if event.type == pygame.KEYDOWN: # キー押下
if event.key == pygame.K_b: # バトル
pygame.mixer.music.load(p_battle) # BGM読み込み
pygame.mixer.music.play(loops=-1) # BGM再生
if event.key == pygame.K_f: # フィールド
pygame.mixer.music.load(p_field) # BGM読み込み
pygame.mixer.music.play(loops=-1) # BGM再生
if event.key == pygame.K_d: # ダメージ
se.play() # SE再生
pygame.quit()
BGM
BGMは`pygame.mixer.music`を利用します。
p_battle = "audio/bgm/maou_bgm_8bit18.mp3" # バトルBGM
pygame.mixer.music.load(p_battle) # BGM読み込み
pygame.mixer.music.play(loops = -1) # BGM再生
`load()`で読み込み、`play()`で再生します。再生時に、引数で`loops = -1`を指定すると、ループし続けます。
`pygame.mixer.music`は、次の曲を読み込むと、前の曲は止まります。ファイルは「OGG」か「MP3」を利用します。
SE
SEは`pygame.mixer.Sound`クラスを利用します。
p_damage = "audio/maou_se_8bit22.wav" # ダメージSE
se = pygame.mixer.Sound(p_damage) # SE読み込み
se.play() # SE再生
`Sound()`の引数で読み込み、`play()`で再生します。ファイルは「OGG」か「WAV」を利用します。
同人誌について
この連載は、同人誌『PythonとPygameで作る レトロ風RPG 全コード』を一部抜粋して編集したものです。
同人誌本編には、ゲーム本体のソースコードや、各種のサンプルコード、Windowsで実行できるEXEファイルが付属しています。PDFで288ページの本になります。ぜひ、こちらもご購入ください(2024-03-10:ver1.0.3 に更新)。
このnoteの記事と、Webページに一部抜粋版を掲載しています。
技術系同人誌など まとめページ
この記事が気に入ったらサポートをしてみませんか?