見た目

【Pygame Zero】キャラクターのコスチュームを変えよう

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

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

今回のプロジェクトは、こちら!
ラッチ先生
ラッチ先生

今回のプロジェクトには、
boonボーンの他に 紫色の敵が 登場します。

紫色の敵の画像と基礎プログラムを入れた
「見た目01 敵から逃げろ!No.2」zipフォルダを ダウンロードしてください

pythonしよう!見た目01:ボーン・敵を表示する
pythonしよう!見た目01:敵から逃げろ!.1No.2zipの中身
スック
スック

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

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

ボーンを マウスで 動かす

敵が コスチュームを変えながら 追ってくる

敵に捕まると セリフを言う

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

ラッチ先生
ラッチ先生

今回の「敵から 逃げろ!No.2」ゲームでは、
boonボーンが セリフを言う
・ 敵が コスチュームを 変える
プログラムが あります

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

pythonしよう!見た目01:sayモジュールの解説
スック
スック

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

ラッチ先生
ラッチ先生

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

pythonしよう!見た目01:Actor()クラスの解説
スック
スック

わぁ~!いっぱい入っているね
『 . (ドット)』を付ければ、使えるよ

ラッチ先生
ラッチ先生

今回のプログラミングには、ポイントが 2つあります

スック
スック

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

pythonしよう!見た目01:ポイント2変数boon_stateの解説
スック
スック

今回は、2つの状態に 分けました

ラッチ先生
ラッチ先生

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

Python
boon_state = "escape"           #1 変数boon_state 初期値:"escape"
Python
def on_mouse_move(pos):         #2 動いているマウスの座標を 取得
    global boon_state           #3 グローバル変数boon_state

    mouse.pos = pos 

    if boon_state == "escape":  #4 もし、変数boon_stateが "escape"だったら
        boon.pos = pos          #5 マウスの座標を boonの座標に入れる

ポイント

2. onオン_mouseマウス_moveムーヴ(posポス)関数で、
 動いているマウスの座標を引数posポスの中に 入れます

スック
スック

posポス は、
positionポジション(位置)の 略語だよ

ラッチ先生
ラッチ先生

mouseマウスオブジェクトを使って
敵が マウスを追いかけるように プログラムします。

pythonしよう!見た目01:mouseオブジェクトの解説
Python
mouse.pos = 400, 300       #1 属性posを追加 初期化:座標(400, 300)
Python
def on_mouse_move(pos): 
    global boon_state 

    mouse.pos = pos        #2 動いているマウスの座標を マウスのposに入れる
    
    if boon_state == "escape": 
        boon.pos = pos  
Python
def enemy_move():          #3 敵の動きをまとめる

    enemy.angle = enemy.angle_to(mouse.pos)  #4 マウスの方を 向ける
    enemy.move_forward(5)  #5 敵を5pxずつ動かす

def update():              #6 更新する
    enemy_move()           #7 敵を 動かす
pythonしよう!見た目01:angle_to()メゾットの解説
ラッチ先生
ラッチ先生

次は、敵のコスチュームを 変えていくよ

Python
enemy.images = ["purple_enemy", "green_enemy", "red_enemy", "yellow_enemy", "blue_enemy"]  #1 リストに 画像を入れる
enemy.fps = 7  #2 1秒間に7回切り替える
Python
def enemy_move(): 

    enemy.angle = enemy.angle_to(mouse.pos) 
    enemy.move_forward(5) 
    enemy.animate() #3 コスチュームを変える
スック
スック

簡単に できちゃうんだね

ラッチ先生
ラッチ先生

最後に、
sayセイモジュールのtextテキスト_displayディスプレイオブジェクトを使って
boonボーンに セリフを 言わせよう

pythonしよう!見た目01:sayモジュールの解説
pythonしよう!見た目01:say()メゾットの解説
スック
スック

敵との衝突判定は、
collideコライド_pixelピクセル( ) メゾットを 使ったよ

pythonしよう!見た目01:collide_pixel()メゾットの解説
Python
def draw():
    screen.fill("white")
    boon.draw()
    enemy.draw()
    text_display.draw(screen)  #1 テキスト表示装備を 準備する

def on_mouse_move(pos): 
    global boon_state 

    mouse.pos = pos 

    if boon_state == "escape": 
        boon.pos = pos 

        if boon.collide_pixel(enemy):  #2 もし、敵に 触れたら
            boon_state = "catch"       #3 変数boon_stateを ”catch"にする
            boon.image = "ouch_boon"   #4 boonの画像を "ouch_boon"にする
            boon.say("Ouch", 2, size=70, color="red", y_offset=-70)  #5 [Ouch!」と2秒間 言う
pythonしよう!見た目01:画像ouch_boon
スック
スック

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

ラッチ先生
ラッチ先生

今回は、
コスチュームを変えながら追ってくる敵から逃げるゲームの
プログラムを作りました。

敵から逃げろ!No.2
Python
import pgzrun
from pgzhelper import *
from say import text_display
from costume import *

WIDTH = 800
HEIGHT = 590

boon = Actor("boon", (400, 300))
enemy = Actor("purple_enemy", (700, 100))

boon_state = "escape" 
mouse.pos = 400, 300 

enemy.images = ["purple_enemy", "green_enemy", "red_enemy", "yellow_enemy", "blue_enemy"] 
enemy.fps = 7 

def draw():
    screen.fill("white")
    boon.draw()
    enemy.draw()
    text_display.draw(screen) 

def on_mouse_move(pos): 
    global boon_state 

    mouse.pos = pos 

    if boon_state == "escape": 
        boon.pos = pos 

        if boon.collide_pixel(enemy): 
            boon_state = "catch" 
            boon.image = "ouch_boon" 
            boon.say("Ouch", 2, size=70, color="red", y_offset=-70) 
            
def enemy_move(): 

    enemy.angle = enemy.angle_to(mouse.pos) 
    enemy.move_forward(5) 
    enemy.animate()

def update():
    enemy_move()

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

コスチュームを変えたければ
Actorアクター()クラスの属性imageイメージに 画像を いれよう

コスチュームを次々と変えるアニメーションにする場合は、
costumeコスチュームモジュールをインポートして
3つのステップで プログラムを作っていこう

試してみてね!

スック
スック

それじゃ、またね!

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

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

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