簡単なゲーム

【Pygame Zero】簡単なゲーム05:今日の運勢は?boon占いスロット

ratch2025

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

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

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

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

BGM提供:DOVA-SYNDROME
https://dova-s.jp/
OP/EDジングル50by t12ya 

効果音提供:Chisato’s Website
https://chisatosound.sakura.ne.jp/index.html
「Accent. Brilliant [02] (Low)」:アクセント
「Bump. Low-Bit [04B]」:アクションゲーム
・ 「Power Up Item [01] (Fast)」:アクションゲーム

ラッチ先生
ラッチ先生

基礎プログラムと 画像を入れた
「簡単なゲーム05 boonボーン うらない!」zipフォルダを ダウンロードしてください

pythonしよう!簡単なゲーム05:画面を表示する
スック
スック

今回は、スクリーンの色を “lavenderblushラベンダーブラッシュ“に したよ

「原色大事典」サイトには、URL:https://www.colordic.org/
pygame zeroで使える色が載っています

pythonしよう!簡単なゲーム05:風船スロット!zipの中身
スポンサーリンク

スクリーンに 文字を表示する

pythonしよう!簡単なゲーム05:文字を表示する

boonうらない スロットを 回す

結果を 発表をする

pythonしよう!簡単なゲーム05:うらないの結果発表

BGM・効果音を 入れる

BGM提供:DOVA-SYNDROME
https://dova-s.jp/
OP/EDジングル50by t12ya 

効果音提供:Chisato’s Website
https://chisatosound.sakura.ne.jp/index.html
「Accent. Brilliant [02] (Low)」:アクセント
「Accent. Synth-Bell. E-Major [01B] (Polyphonic)」
                        アクセント
・ 「Button [04] (Down))」:ボタン
・ 「Kiga Nukeru [01] (Long)」:アニメ

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

ラッチ先生
ラッチ先生

今回の「boonボーンうらない!」では、
boonボーン の 画像切り替え
・ セリフを 言う
・ モザイクを かける
プログラムがあります。

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

pythonしよう!簡単なゲーム05:sayモジュールの解説
pythonしよう!簡単なゲーム05:visualモジュールの解説
ラッチ先生
ラッチ先生

このvisualビジュアルモジュールにある VisualEffectビジュアルエフェクト( )クラスを使うため
pgzhelperピージーゼットヘルパー モジュールも用意します。

pythonしよう!簡単なゲーム05:pgzhelperモジュールの解説
スック
スック

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

ラッチ先生
ラッチ先生

Actorアクター()クラスが入っている変数boonボーン には、
boonボーンを 動かす属性(データ)やメソッド(命令)が あります。

pythonしよう!簡単なゲーム05:変数boonの解説
スック
スック

属性(データ)やメソッド(命令)は、
『 . (ドット)』を付ければ、使えるよ

ラッチ先生
ラッチ先生

今回は、
boonボーンにモザイクをかけながら画面切り替えアニメーションをする プログラムを作っていきます。

スック
スック

この3つのステップで
コスチュームを 切り替えることができるよ

pythonしよう!簡単なゲーム05:変数boonの解説
スック
スック

これで、boonボーンに モザイクを かけることができるよ

スック
スック

切り替わる画像に モザイクを かけるよ

スック
スック

3つに 分けたよ

pythonしよう!簡単なゲーム05:文字を表示する
ラッチ先生
ラッチ先生

textテキスト( ) メソッドを使って、
スクリーンに
Pressプレス SPACEスペース toトゥー Startスタート(スペースキーを押して スタート!)」と 表示させましょう

pythonしよう!簡単なゲーム05:text( ) メソッドの解説
Python
game = "ready"  #1 変数gameを 宣言する 初期値: ready

def draw():
    screen.fill("lavenderblush")
    if game == "ready":  #2 もし 変数gameが readyなら
        screen.draw.text("Press SPACE to Start!", color = "blue", center=(400, 500), fontsize=80) #3 Press SPACE to START!を 表示する
pythonしよう!簡単なゲーム05:スクリーンに文字列を 表示するの解説
スック
スック

パラメーターで位置を指定できて、便利だよ

ラッチ先生
ラッチ先生

まず、boonの画像を プロパティ:imagesイメージズに入れ
animateアニメイト( ) メソッドで 画像の切り替えをしよう

スック
スック

setセット_animationアニメーション_rangeレンジ( )メソッドを使って
リストの1番から3番のboonボーンの画像を 指定したよ

pythonしよう!簡単なゲーム05:set_animation_range()メソッドの解説
Python
boon.images = ["boon", "boon_ok", "boon_ohno", "boon_lucky"]  #1 プロパティimagesに 画像を セットする 
Python
def on_key_down(key):       #2 キーが押された実行する関数を定義する
    global game             #3 グローバル変数 game

    if key == keys.SPACE:   #4 もし キーが スペースキーなら
        if game == "ready": #5 もし 変数gameが readyなら
            game = "play"   #6 変数gameに playを代入する
            boon.set_animation_range(1, 3)  #7 アニメーション画像に 1~3をセットする
            boon.fps = 20 #8 画像切り替えアニメーションの速さを 20にする
        
        elif game == "ready": #10 もし 変数gameが readyなら
            game = "result"   #11 変数gameに resultを 代入する      
Python
def update():
    if game == "play":    #8 もし 変数gameが playなら
        boon.animate()    #9 画像切り替えアニメーションを 実行する
スック
スック

おおっ! スロットが、できた

ラッチ先生
ラッチ先生

visualビジュアルモジュールを使って、boonボーンにモザイクを かけます。
まず、VisualEffectビジュアルエフェクト()クラスで、boonボーンオブジェクトを生成します

pythonしよう!簡単なゲーム05:変数boonの解説
Python
boon = VisualEffect("boon", (400, 300))  #1 VisualEffect()クラスに 変える  
ラッチ先生
ラッチ先生

setセット_mosaicモザイク()メソッドを使って、boonボーンにモザイクをかけよう

Python
def on_key_down(key): 
    global game 

    if key == keys.SPACE: 
        if game == "ready": 
            game = "play"  
            boon.set_animation_range(1, 3) 
            boon.fps = 20 
            boon.set_mosaic(10)  #1 boonの画像に モザイクをかける
            
        elif game == "play": 
            game = "result"  
            boon.reset_effects() #3 boonの画像を 元に戻す
Python
def update():
    if game == "play": 
        boon.animate() 
        boon.setup_visual_costume() #2 更新する画像に モザイクをかける
スック
スック

3つのステップで、簡単にモザイクが かけられるよ!

pythonしよう!簡単なゲーム05:うらないの結果発表
ラッチ先生
ラッチ先生

変数bgビージー_imageイメージを 作成して、blitブリット()メソッドを使って
背景画像を表示しましょう

pythonしよう!簡単なゲーム05:blit()メソッドを解説
Python
bg_image = None  #1 変数bg_imageを 宣言 初期値:None (無し)

def draw():
    screen.fill("lavenderblush")
    if game == "ready": 
        screen.draw.text("Press SPACE to Start!", color = "blue", center=(400, 500), fontsize=80)
    elif game == "result":            #2 もし 変数gameが resultなら
        screen.blit(bg_image, (0, 0)) #3 変数bg_imageを 表示する
Python
def on_key_down(key): 
    global game, bg_image  #4 グローバル変数 bg_image

    if key == keys.SPACE: 
        if game == "ready": 
            game = "play"  
            boon.set_animation_range(1, 3) 
            boon.fps = 20 
            boon.set_mosaic(10) 
            
        elif game == "play": 
            game = "result"  
            boon.reset_effects() 

            if boon.image == "boon_ok":  #5 もし プロパティimageが 画像boon_okなら
                bg_image = "bg_ok"       #6 変数bg_imageに bg_okを代入する
                
            elif boon.image == "boon_ohno": #7 もし プロパティimageが 画像boon_ohnoなら
                bg_image = "bg_ohno"     #8 変数bg_imageにbg_ohnoを代入する
                
            elif boon.image == "boon_lucky":  #9 もし プロパティが 画像boon_lickyなら
                bg_image = "bg_lucky"   #10 変数bg_imageにbg_luckyを代入する
スック
スック

おおっ!いいねえ

ラッチ先生
ラッチ先生

つぎは、sayセイ( )メソッドを使って
それぞれセリフを言わせましょう

pythonしよう!簡単なゲーム05:say()メソッドを解説
Python
def draw():
    screen.fill("lavenderblush")
    if game == "ready":
        screen.draw.text("Press SPACE to Start!", color = "blue", center=(400, 500), fontsize=80)
Python
    text_display.draw(screen) #1 テキストディスプレイを 装備する
Python
def on_key_down(key): 
    global game, bg_image 

    if key == keys.SPACE: 
        if game == "ready":
            game = "play"    
Python
        elif game == "play": 
            game = "result"  
            boon.reset_effects() 

            if boon.image == "boon_ok": 
                bg_image = "bg_ok" 
                boon.say("O.K!", 2, color = "red", size=100, y_offset=150)  #2 「o.k!」と2秒言う
                
            elif boon.image == "boon_ohno": 
                bg_image = "bg_ohno" 
                boon.say("Oh no!", 2, color="blue", size=100, y_offset=150)  #3 「Oh no!」と2秒言う
                
            elif boon.image == "boon_lucky": 
                bg_image = "bg_lucky" 
                boon.say("Lucky!", 2, color="yellow", size=100, y_offset=150)  #4 「Lucky!」と2秒言う
スック
スック

セリフが入ると よくなるね

ラッチ先生
ラッチ先生

そして、isイズ_talkingトーキング()メソッドを使って
セリフが終わったら、スペースキーを押して 再スタートさせます

pythonしよう!簡単なゲーム05:is_talking()メソッドを解説
Python
def on_key_down(key): 
    global game, bg_image 

    if key == keys.SPACE: 
        if game == "ready": 
            screen.draw.text("Press SPACE to Start!", color = "blue", center=(400, 500), fontsize=80)        
Python
        elif game == "play": 
            game = "result"
Python
        elif game == "result" and not boon.is_talking(): #1 もし 変数gameが result かつ boonがセリフを言ってなかったら
            boon.image = "boon"  #2 プロパティimageに 画像boonを代入する
            bg_image = None  #3 変数bg_imageに 無しに代入する
            game = "ready"   #4 変数gameに readyを代入する
スック
スック

notノット isイズ_talkingトーキング():セリフを言っていない

これで、セリフを言っている時に スペースキーを押しても
反応しないよ!

BGM提供:DOVA-SYNDROME
https://dova-s.jp/
OP/EDジングル50by t12ya 

効果音提供:Chisato’s Website
https://chisatosound.sakura.ne.jp/index.html
「Accent. Brilliant [02] (Low)」:アクセント
「Accent. Synth-Bell. E-Major [01B] (Polyphonic)」
                        アクセント
・ 「Button [04] (Down))」:ボタン
・ 「Kiga Nukeru [01] (Long)」:アニメ

ラッチ先生
ラッチ先生

それでは、BGMを 入れてみましょう

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

pythonしよう!簡単なゲーム05:MP3ファイル

☆ Pygame zeroでは英語の大文字が 使えません。 エラーが出ます
 小文字 に直します

pythonしよう!簡単なゲーム05:mousicフォルダの解説
pythonしよう!簡単なゲーム05:musicモジュールの解説
Python
music.play("opedジングル50")  #1 BGMを 入れる
スック
スック

今回のプログラムに「DOVA-SYNDROME」サイトから
OP/EDジングル50by t12ya 
 BGMの曲として お借りしました。 ありがとうございます。

ラッチ先生
ラッチ先生

つぎに
効果音をつけましょう! 
 ・ スペースキーを押した時
 ・ 結果発表時:O.K!
 ・ 結果発表時:Oh!no
 ・ 結果発表時:Lucky!

Pythonパイソン zeroゼロには、soundsサウンズオブジェクトが標準装備であります。

次の手順で 行います

pythonしよう!簡単なゲーム05:WAVファイル
pythonしよう!簡単なゲーム05:WAVファイル
pythonしよう!簡単なゲーム05:WAVファイル
pythonしよう!簡単なゲーム05:WAVファイル
pythonしよう!簡単なゲーム05:soundsフォルダの解説
pythonしよう!簡単なゲーム05:soundsフォルダの解説
スック
スック

今回のプログラムに
Chisato’s Website」サイトから
Accent. Brilliant [02] (Low)」:アクセント
「Accent. Synth-Bell. E-Major [01B] (Polyphonic)」
                        アクセント
「Button [04] (Down))」:ボタン
・ 「Kiga Nukeru [01] (Long)」:アニメ

 効果音を お借りしました。 ありがとうございます。

Python
def on_key_down(key): 
    global game, bg_image 

    if key == keys.SPACE: 
        if game == "ready": 
            game = "play"  
            boon.set_animation_range(1, 3) 
            boon.fps = 20 
            boon.set_mosaic(10) 
            sounds.button_04_down.play()  #1 効果音を入れる
            
        elif game == "play": 
            game = "result"  
            boon.reset_effects() 

            if boon.image == "boon_ok": 
                bg_image = "bg_ok" 
                boon.say("O.K!", 2, color = "red", size=100, y_offset=150) 
                sounds.accent_synth_bell_e_major_01b_poly.play() #3 効果音を入れる 
            elif boon.image == "boon_ohno": 
                bg_image = "bg_ohno" 
                boon.say("Oh no!", 2, color="blue", size=100, y_offset=150) 
                sounds.kiga_nukeru_01_long.play()  #4 効果音を入れる
            elif boon.image == "boon_lucky": 
                bg_image = "bg_lucky" 
                boon.say("Lucky!", 2, color="yellow", size=100, y_offset=150) 
                sounds.accent_brilliant_02_low.play()  #5 効果音を入れる

        elif game == "result" and not boon.is_talking(): 
            boon.image = "boon" 
            bg_image = None 
            game = "ready" 
            sounds.button_04_down.play() #2 効果音を入れる
スック
スック

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

ラッチ先生
ラッチ先生

今回は、
boonボーンに モザイクを入れたスロットのプログラムを 作りました。

boon うらない!
Python
import pgzrun
from pgzhelper import *
from costume import *
from say import text_display
from visual import VisualEffect

WIDTH = 800
HEIGHT = 600

boon = VisualEffect("boon", (400, 300)) 
boon.images = ["boon", "boon_ok", "boon_ohno", "boon_lucky"] 

game = "ready" 
bg_image = None 

def draw():
    screen.fill("lavenderblush")
    if game == "ready":
        screen.draw.text("Press SPACE to Start!", color = "blue", center=(400, 500), fontsize=80)
    elif game == "result": 
        screen.blit(bg_image, (0, 0)) 
    boon.draw(screen) 
    text_display.draw(screen) 

def on_key_down(key): 
    global game, bg_image 

    if key == keys.SPACE: 
        if game == "ready": 
            game = "play"  
            boon.set_animation_range(1, 3) 
            boon.fps = 20 
            boon.set_mosaic(10) 
            sounds.button_04_down.play() 
            
        elif game == "play": 
            game = "result"  
            boon.reset_effects() 

            if boon.image == "boon_ok": 
                bg_image = "bg_ok" 
                boon.say("O.K!", 2, color = "red", size=100, y_offset=150) 
                sounds.accent_synth_bell_e_major_01b_poly.play() 
            elif boon.image == "boon_ohno": 
                bg_image = "bg_ohno" 
                boon.say("Oh no!", 2, color="blue", size=100, y_offset=150) 
                sounds.kiga_nukeru_01_long.play() 
            elif boon.image == "boon_lucky": 
                bg_image = "bg_lucky" 
                boon.say("Lucky!", 2, color="yellow", size=100, y_offset=150) 
                sounds.accent_brilliant_02_low.play() 

        elif game == "result" and not boon.is_talking(): 
            boon.image = "boon" 
            bg_image = None 
            game = "ready" 
            sounds.button_04_down.play() 
            
def update():
    if game == "play": 
        boon.animate() 
        boon.setup_visual_costume() 

music.play("opedジングル50") 

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

画像にモザイクをかける時は、setセット_mosaicモザイク()メソッド。

defデフ updateアップデート()関数で
毎回更新するごとに 画像にモザイクをかける場合は、
setセット_visualビジュアル_costumeコスチューム()メソッド。

覚えておこうね!

スック
スック

みんなも 作っているゲームで モザイクをかけてみてね

それじゃ、またね!

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

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

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