動き2

【Pygame Zero】クリックした場所へ行ってセリフを言う

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

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

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

今回のプロジェクトには、
boonの他に 赤いボールが登場します。
赤いボールの画像と基礎プログラムを入れた
「動き2-1 ボールをねらえ」zipフォルダを ダウンロードしてください

pythonしよう!動き2-1:ボーン・ボールを表示する
pythonしよう!動き2-1:ボールをねらえ.zipの中身
スック
スック

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

参考記事
【Pygame Zero】スクリーンに画像を 表示させる
【Pygame Zero】スクリーンに画像を 表示させる
スポンサーリンク
コードを 書こう
ボールを マウスで動かす
クリックした所に boonが 行く
boonが セリフを 2秒間 言う
プログラムを 実行してみよう
ラッチ先生
ラッチ先生

今回のプロジェクトでは、
boonボーン が セリフを 言うので sayセイモジュールを用意しました

Python
import pgzrun
from say import text_display    
pythonしよう!動き2-1:sayモジュールの解説
ラッチ先生
ラッチ先生

onオン_mouseマウス_moveムーブ関数を使って、
動いているマウスの座標を取得します。

スック
スック

引数posポス の中に、マウスの座標が 代入されていくんだね

Python
def on_mouse_move(pos):
    ball.pos = pos
pythonしよう!動き2-1:Actor()クラスの解説

ballボール.posポス と「.(ドット)」を付けて使う
ballボールの座標(ballのx座標, ballボールのy座標)』
データが 入ります。

pythonしよう!動き2-1:ボールの座標

数学の「=」と違うから気を付けてね
プログラムの世界では、「==」に なるよ

スック
スック

代入とは、「データを変数に 入れる」ことだよ

ラッチ先生
ラッチ先生

変数「boonボーン_stateステートboonボーンの状態)」を作って
boonボーンの状態ごとに プログラムを作っていきましょう

Python
boon_state = "look"
pythonしよう!動き2-1:変数boon_stateの解説
ラッチ先生
ラッチ先生

まずは、変数boon_state が、”look”
ボールをねらっている時のプログラムを作ります
ボールをねらうboonの向きは、
anlge_to( )メゾットを 使おう!

pythonしよう!動き2-1:angle_to()メゾットの解説
pythonしよう!動き2-1:update関数の解説
Python
def update():
    if boon_state == "look": #もし、変数boon_stateが "look"なら
        boon.angle = boon.anglo_to(ball) 
スック
スック

boonボーンが ボールをねらい始めたね

ラッチ先生
ラッチ先生

つぎは、defデフ onオン_mouseマウス_downダウン(posポス)関数を使って
マウスをクリックしたら、boonボーンが その場所へ 行く
プログラムを 作りましょう

Python
def on_mouse_down(pos):
    global boon_state #グローバル宣言
    
    if boon_state == "look": #もし、変数boon_stateが "look"なら
        boon.pos = pos       #クリックした座標を boonの座標に 代入する
        boon_state = "catch" #変数boon_stateに ”catch"を 代入する
スック
スック

あらら!ボールの下に入っちゃったぞ…

ラッチ
ラッチ

おぅぅぅ…と!
これだと、ボールをつかまえた感じにならないね

ifイフ boonボーン_stateステート == “lookルック“:

上の条件を付けて、
ボールは、変数boonボーン _stateステート が “lookルック“の時だけ 見えるようにしましょう

Python
def draw():
    screen.fill("white")
    boon.draw()
    if boon_state == "look": #もし、変数boon_stateが "look"なら
        ball.draw() #ボールを 表示する
スック
スック

変数boon_state が “catch”になったら、ボールが 消えたね

pythonしよう!動き2-1:クリックしたらboonが行くプログラム
ラッチ先生
ラッチ先生

それでは、sayセイモジュールのtextテキスト_displayディスプレイを使って
boonボーン に セリフを 言わせましょう

まずは、drawドロー( )メゾットを 使って
キャラクターのセリフを スクリーンに 表示できるようにします。

Python
def draw():
    screen.fill("white")
    boon.draw()
    if boon_state == "look":
        ball.draw()
    text_display.draw(screen) #キャラクターのセリフが表示できる
pythonしよう!動き2-1:TextDisplayクラスのdraw()メゾットの解説
スック
スック

これで、キャラクターにセリフを言わせる準備が できました

ラッチ先生
ラッチ先生

変数boonボーン_stateステート が “catchキャッチ“に なったら、
TextテキストDisplayディスプレイクラスのsayメゾットで
boonボーンに セリフを 言わせよう!

Python
        boon_state = "catch"
        boon.say("Get!", 2, size=70, color="red", y_offset=-70) 
pythonしよう!動き2-1:TextDisplayクラスのsay()メゾットの解説
pythonしよう!動き2-1:テキストディスプレイオブジェクトの座標の初期値
スック
スック

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

ラッチ先生
ラッチ先生

今回は、
boonボーンがボールをねらって、クリックするとボールを捕まえるプログラムを作りました。

ボールをねらえ!
Python
import pgzrun
form say import text_display

WIDTH = 800
HEIGHT = 590

boon = Actor("boon", (400, 300))
ball = Actor("redball", (500, 100))

boon_state = "look"

def draw():
    screen.fill("white")
    boon.draw()
    if boon_state == "look":
        ball.draw()
    text_display.draw(screen)
  
def on_mouse_move(pos):
    ball.pos = pos

def update():
    if boon_state == "look":
        boon.angle = boon.angle_to(ball)

def on_mouse_down(pos):
    global boon_state
    
    if boon_state == "look":
        boon.pos = pos
        boon_state = "catch"
        boon.say("Get!", 2, size=70, color="red", y_offset=-70)

pgzrun.go()
pythonしよう!動き2-1:sayモジュールの解説
ラッチ先生
ラッチ先生

TextテキストDisplayディスプレイクラス(設計図)が入っている変数『textテキスト_displayディスプレイ

これは、簡単にキャラクターにセリフが表示できます。

あなたの作るゲームに、使ってみてください。

スック
スック

それじゃ、また!

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

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

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