ゲームの技

【Pygame Zero】ゲームの技03:BGMを 流そう!

ratch2025

こんにちは!
「Pythonしよう!楽しく学べるプログラミング教室」
ラッチ先生です

ラッチ先生
ラッチ先生
スック
スック

スックです。よろしくね!

今回のプロジェクトは、こちら!

BGM提供:DOVA-SYNDROME
https://dova-s.jp/
・ 「あさごはんなあに?」 by ゆうり

効果音提供:Chisato’s Website
https://chisatosound.sakura.ne.jp/index.html
・ 「thought_bubble_cloud_02」

ラッチ先生
ラッチ先生

基礎プログラムと 画像を入れた
「ゲームの技03 幽霊から逃げろ!」zipフォルダを ダウンロードしてください

pythonしよう!ゲームの技03:ボーン・幽霊を表示する
pythonしよう!ゲームの技03:幽霊から逃げろ!zipの中身
スック
スック

この基礎プログラムは、こちらの記事で解説しています

参考記事
【Pygame Zero】スクリーンに画像を 表示させる
【Pygame Zero】スクリーンに画像を 表示させる
スポンサーリンク

幽霊から 逃げる

幽霊に捕まると セリフを言う

pythonしよう!ゲームの技03:幽霊に捕まるとセリフを言う

BGM・効果音をつける

プログラムを 実行してみよう

ラッチ先生
ラッチ先生

今回の「幽霊から 逃げろ!」では、
boonボーンが幽霊に襲われる
・ 幽霊を ランダムな場所へ
boonボーン が セリフを言う
プログラムが あります

そこで、3つのモジュールを 用意しました

pythonしよう!ゲームの技03:pgzhelperモジュールを解説
pythonしよう!ゲームの技03:randomモジュールを解説
pythonしよう!ゲームの技03:sayモジュールを解説
スック
スック

モジュールとは、
関数やプログラムが書かれているファイルのことだよ

ラッチ先生
ラッチ先生

今回は、
ゲーム中にBGMを流すプログラムを 作っていきます。

ポイントが 3つあります。

スック
スック

今回のプログラムに「DOVA-SYNDROME」サイトから
・ 「あさごはんなあに?」 by ゆうり
 BGMの曲として お借りしました。 ありがとうございます。

スック
スック

今回のプログラムに『Chisato’s Website」サイトから
・ アニメ: thought_bubble_cloud_02.wav
 効果音を お借りしました。 ありがとうございます。

スック
スック

2つに 分けたよ

ラッチ先生
ラッチ先生

最初に、
boonボーンを マウスで 動かす プログラムを 作りましょう


onオン_mouseマウス_moveムーヴ ( ) 関数で マウスの座標(posポス)を
boonボーンの座標(posポス)に 代入しましょう

Python
game = "play"           #1 変数gameを宣言 初期値:"play"
Python
def on_mouse_move(pos): #2 動いているマウスの座標を取得して posに代入する
    global game         #3 グローバル変数 game

    if game == "play":  #4 もし 変数gameが playだったら
        boon.pos = pos  #5 マウスの座標posを boonの座標posに代入する
スック
スック

これで、boonボーンの動きが 完成だよ

ラッチ先生
ラッチ先生

つぎは、
animateアニメイト( ) 関数を使って 幽霊の動きを 作りましょう

pythonしよう!ゲームの技03:animate( ) 関数の解説
Python
def ghost_move():  #1 幽霊の動きを まとめる       
    target_x = random.randint(75, Width-75) #2 75~725からランダムに決めて 目的地x座標に 代入する
    target_y = random.randint(75, HEIGHT-75) #3 75~515からランダムに決めて 目的地y座標に 代入する
    timer = random.uniform(0.5, 1.0) #4 0.5~1.0からランダムに決めて 変数timerに 代入する
    animate(ghost, pos = (target_x, target_y), duration = timer, on_finished = ghost_move) #5 幽霊のアニメーション

ghost_move() #6 幽霊が 動く
スック
スック

キーワード引数onオン_finishedフィニッシュド
ghostゴースト_moveムーヴ() に なっているから、何度も繰り返すんだね

pythonしよう!ゲームの技03:幽霊の動ける範囲
スック
スック

animationアニメーション( )関数を使うと 簡単にできちゃうね

pythonしよう!ゲームの技03:幽霊に捕まるとセリフを言う
ラッチ先生
ラッチ先生

つぎに、
boonボーンを 捕まえた時に幽霊のアニメーションを止めましょう。

スック
スック

boonボーンも 動きを止めたね

ラッチ先生
ラッチ先生

そして、
boonボーンの画像を “ouchアウチィ_boonボーン“に 変えて
sayセイ( )メゾットで セリフを言わせましょう

pythonしよう!ゲームの技03:say( ) メゾットの解説
Python
def draw():
    screen.fill("white")
    boon.draw()
    ghost.draw()
    text_display.draw(screen) #1 テキストディスプレイを スクリーンに装備する
Python
def update():
    global game

    if game == "play":
        if boon.collide_pixel(ghost):
            game = "over"
            ghost_animation.stop()
            boon.image = "ouch_boon" #2 boonの画像を "ouch_boon"にする
            boon.say("Ouch!", 2, color="red", size=70, y_offset=-70) #3 boonが 「Ouch!」と2秒間言う
スック
スック

これで、boonボーン と幽霊の動きは 完了です

BGM提供:DOVA-SYNDROME
https://dova-s.jp/
・ 「あさごはんなあに?」 by ゆうり

効果音提供:Chisato’s Website
https://chisatosound.sakura.ne.jp/index.html
・ アニメ: thought_bubble_cloud_02.wav

ラッチ先生
ラッチ先生

このゲームに BGMを流しましょう

Pythonパイソン zeroゼロには、musicミュージックオブジェクトが標準装備であります。
やり方、以下の手順です

pythonしよう!ゲームの技03:BGMの流し方の解説
pythonしよう!ゲームの技03:musicモジュールの解説02
スック
スック

効果音は、soundsサウンズオブジェクトで再生します
音源の形式は、wav形式。  

BGMと違うからね

効果音提供:Chisato’s Website
https://chisatosound.sakura.ne.jp/index.html
・ アニメ: thought_bubble_cloud_02.wav

Python
def update():
    global game

    if game == "play":
        if boon.collide_pixel(ghost):
            game = "over"
            ghost_animation.stop()
            boon.image = "ouch_boon"
            boon.say("Ouch!", 2, color="red", size=70, y_offset=-70)
            music.stop() #2 BGMを 止めるつける
            sounds.thought_bubble_cloud_02.play() #3 効果音を つける
            
music.play("asagohan")  #1 "あさごはん"のBGMを 再生する

BGM提供:DOVA-SYNDROME
https://dova-s.jp/
・ 「あさごはんなあに?」 by ゆうり

効果音提供:Chisato’s Website
https://chisatosound.sakura.ne.jp/index.html
・ アニメ: thought_bubble_cloud_02.wav

スック
スック

これで、今回の学習は終了! おつかれさま

ラッチ先生
ラッチ先生

今回は、
ゲームにBGMを入れたプログラムを 作りました。

幽霊から逃げろ!
Python
import pgzrun
import random
from pgzhelper import *
from say import text_display

WIDTH = 800
HEIGHT = 590

boon = Actor("boon", (400, 300))
ghost = Actor("ghost", (700, 100))

game = "play"
ghost_animation = None
    
def draw():
    screen.fill("white")
    boon.draw()
    ghost.draw()
    text_display.draw(screen)

def on_mouse_move(pos):
    global game

    if game == "play":
        boon.pos= pos

def ghost_move():
    global ghost_animation
    
    target_x = random.randint(75, WIDTH-75)
    target_y = random.randint(75, HEIGHT-75)
    timer = random.uniform(0.5, 1.0)
    ghost_animation = animate(ghost, pos = (target_x, target_y), duration= timer, on_finished=ghost_move)

ghost_move()

def update():
    global game

    if game == "play":
        if boon.collide_pixel(ghost):
            game = "over"
            ghost_animation.stop()
            boon.image = "ouch_boon"
            boon.say("Ouch!", 2, color="red", size=70, y_offset=-70)
            music.stop()
            sounds.thought_bubble_cloud_02.play()
            
music.play("asagohan")         

pgzrun.go()
ラッチ先生
ラッチ先生

BGMは、musicミュージックオブジェクトで 簡単に流せます

BGM提供:DOVA-SYNDROME
https://dova-s.jp/
・ 「あさごはんなあに?」 by ゆうり

pythonしよう!ゲームの技03:musicモジュールの解説
スック
スック

みんなも好きなBGMを『musicミュージック』フォルダに入れて 流してみよう
それじゃ、またね!

スポンサーリンク
ABOUT ME
ラッチ先生
ラッチ先生
こんにちは!
「Pythonしよう!楽しく学べるプログラミング教室」の学長、ラッチです。

scratchのように楽しく学べるPython講座です。
・図やアニメーションを使って、わかりやすく楽しく学べる!
・毎回の授業が新しい発見の連続!
・プログラミングの考え方が身につき、自分のやりたいことが形にできるように。

この3点をモットーにサイトを立ち上げました。 よろしくお願いします
記事URLをコピーしました