この連載は、同人誌『PythonとPygameで作る レトロ風RPG 全コード』を一部抜粋して編集したものです。
同人誌本編には、ゲーム本体のソースコードや、各種のサンプルコード、Windowsで実行できるEXEファイルが付属しています。PDFで290ページの本になります。ぜひ、こちらもご購入ください。
(2024-03-28:ver1.0.4 に更新、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はpygame.mixer.music
を利用します。
p_battle = "audio/bgm/maou_bgm_8bit18.mp3" # バトルBGMpygame.mixer.music.load(p_battle) # BGM読み込みpygame.mixer.music.play(loops = -1) # BGM再生
load()
で読み込み、play()
で再生します。再生時に、引数でloops = -1
を指定すると、ループし続けます。
pygame.mixer.music
は、次の曲を読み込むと、前の曲は止まります。ファイルは「OGG」か「MP3」を利用します。
SEはpygame.mixer.Sound
クラスを利用します。
p_damage = "audio/maou_se_8bit22.wav" # ダメージSEse = pygame.mixer.Sound(p_damage) # SE読み込みse.play() # SE再生
Sound()
の引数で読み込み、play()
で再生します。ファイルは「OGG」か「WAV」を利用します。
この連載は、同人誌『PythonとPygameで作る レトロ風RPG 全コード』を一部抜粋して編集したものです。
同人誌本編には、ゲーム本体のソースコードや、各種のサンプルコード、Windowsで実行できるEXEファイルが付属しています。PDFで290ページの本になります。ぜひ、こちらもご購入ください。
(2024-03-28:ver1.0.4 に更新、2024-03-10:ver1.0.3 に更新)