PythonとPygameで作る レトロ風RPG 全コード

同人誌について

 この連載は、同人誌『PythonとPygameで作る レトロ風RPG 全コード』を一部抜粋して編集したものです。

 同人誌本編には、ゲーム本体のソースコードや、各種のサンプルコード、Windowsで実行できるEXEファイルが付属しています。PDFで290ページの本になります。ぜひ、こちらもご購入ください。

(2024-03-28:ver1.0.4 に更新、2024-03-10:ver1.0.3 に更新)


4-8 Pygameの音声

公開:2024-03-10

音声の例

 音声の例を示します。

 「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で290ページの本になります。ぜひ、こちらもご購入ください。

(2024-03-28:ver1.0.4 に更新、2024-03-10:ver1.0.3 に更新)

 技術系同人誌など まとめページ


トップページに戻る
Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2024 Cronus Crown (c)1997-2024 Masakazu Yanai
ご意見・お問い合わせはサイト情報 弊社への連絡までお願いします
個人情報の取り扱い、利用者情報の外部送信について