動き

【Pygame Zero】キャラクターが マウスに向かって動く

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

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

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

今回のプロジェクトは、
基礎プログラムに 追加していきます。
下の「pygame zero」zipファイルを
ダウンロードしてください

pythonしよう!00:boonを表示する
pythonしよう!動き06:pygame zeroフォルダ
スック
スック

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

参考記事
【Pygame Zero】スクリーンに画像を 表示させる
【Pygame Zero】スクリーンに画像を 表示させる
スポンサーリンク
boonボーンを マウスの方へ 向ける
マウスの方へ 動く
プログラムを 実行してみよう
ラッチ先生
ラッチ先生

boonボーンを マウスの方へ向けるためには、
マウスポインターの位置を 知る必要が あります。

そこで、onオン_mouseマウス_moveムーヴ()関数を 使います

def on_mouse_move()関数
pythonしよう!動き06:def on_mouse_move()関数の解説
ラッチ先生
ラッチ先生

そして、Actorアクター()クラスの
angleアングル_toトゥー()メゾットを 使って、boonボーンを マウスの方へ 向けるんだ

Actor()クラスとは?
pythonしよう!動き06:boon = Actor("boon", (400, 300))の解説
Python
def on_mouse_move(pos):
    boon.angle = boon.angle_to(pos)
pythonしよう!動き06:bppn.angle = boon.angle_to(pos)の解説
angle_to()メゾット
pythonしよう!動き06:Actor()クラスのangle_to()メゾットの解説

pythonしよう!動き06:boon.angle_to(pos)の解説
pythonしよう!動き06:boonがマウスのposの方を向く解説
スック
スック

なるほど!
angleアングル_toトゥー()メゾットで計算された角度を
boonボーン.angleアングル に 代入されて ③ boonボーンが マウスの方を 向くのね

ラッチ先生
ラッチ先生

プログラミングの世界では、
「=」は、代入する。
つまり、
boonボーン.angleアングルに、「○度(データ)」を 代入する と言うこと
数学の「=(イコール)」と 違うからね

それでは、
defデフ updateアップデート()関数を 使って
boonボーンを マウスの方へ 動かしましょう

ラッチ先生
ラッチ先生
def update()関数
pythonしよう!動き06:def update()関数の解説
スック
スック

あっ!ぼく、わかるよ
boonボーンを 動かうのに、moveムーヴ_forwardフォワード()メゾットを 使うんでしょ

Python
def update():
    boon.forward(5)
スック
スック

あれっ?
boonボーンが マウスポインターより 先に 行っちゃうよ…

defデフ updateアップデート()関数は、毎回更新されます。
moveムーヴ_forwardフォワード(5)メゾットだと、ずっと5pxずつ動き続けちゃうんだ

ラッチ先生
ラッチ先生
move_forawrd()メゾット
pythonしよう!動き06:Actorクラスのmove_forward()メゾットの解説
ラッチ先生
ラッチ先生

そこで、目的地へ行くメゾットが あるんだ!
moveムーヴ_towardsトゥワーズ()メゾットです

move_towards()メゾット
pythonしよう!動き06:Actor()クラスのmove_towards()メゾットの解説
pythonしよう!動き06:def on_mouse_move(pos) 引数posは他の関数には使えない

そこで、
変数mouseマウス_x と 変数mouseマウス_y を 作ります。

ラッチ先生
ラッチ先生
Python
mouse_x, mouse_y = 0, 0
pythonしよう!動き06:mouse_x, mouse_y = 0, 0の解説
Python
def on_mouse_move(pos):
    global mouse_x, mouse_y
    
    mouse_x, mouse_y = pos
pythonしよう!動き06:global mouse_x, mouse_y の解説
pythonしよう!動き06:mouse_x, mouse_y = pos の解説
スック
スック

なるほど!
これで、defデフ updateアップデート()関数にも
変数mouseマウス_x, mouseマウス_y にある データが、使えるんだね

そうです。
それでは、moveムーブ_towardsトゥワーズ()メゾットに
変数mouseマウス_x, mouseマウス_yを 入れてみよう

ラッチ先生
ラッチ先生
Python
def update():
    boon.move_towards((mouse_x, mouse_y), 5)
pythonしよう!動き06:boon.move_towards((mouse_x, mouse_y), 5)の解説
スック
スック

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

今回は、
boonボーンが マウスの方へ動き続けるプログラムを 作りました

ラッチ先生
ラッチ先生
boonが マウスの方へ 動く
Python
import pgzrun
from pgzhelper import *

WIDTH = 800
HEIGHT = 590

boon = Actor("boon", (400, 300))

mouse_x, mouse_y = 0, 0

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

def on_mouse_move(pos):
    global mouse_x, mouse_y
    
    mouse_x, mouse_y = pos
    boon.angle = boon.angle_to(pos)

def update():
    boon.move_towards((mouse_x, mouse_y), 5)
    
pgzrun.go()    
ラッチ先生
ラッチ先生

moveムーブ_towardsトゥワーズ()メゾットは、
ゲームを作る時 とても役に立つメゾットです
覚えておくと いいよ

スック
スック

はぁ~い!

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

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

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