動き

【Pygame Zero】キャラクターが 左右に動き続ける

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

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

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

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

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

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

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

学習の流れ

コードを 書こう
boonボーンを 動かす
左右の端に 触れたら、跳ね返る
左に動くboonボーンの逆さを 直す
プログラムを 実行してみよう

プログラミングの仕方を説明します

ラッチ先生
ラッチ先生

まずは、boonボーンを 動かします
boonボーンを動かすプログラムは、「def update():」関数で 作ろう

pythonしよう!動き02:def update()関数の解説
Python
def update():
    boon.move_forward(5)
pythonしよう!動き02:boon.move_forward(5)の解説

7. boonボーン = Actorアクター(“boonボーン“, (400, 300))

変数boonボーンには、Actorアクター()クラス(設計図)が 入っています。

pythonしよう!動き02:変数boon

Actorアクター()クラスに入っている
 ・ angleアングル(キャラクターの向き)
 ・ move_forwardムーヴ・フォワード (キャラクターを 動かす)
 ・ x (キャラクターの x座標)
属性(データ)と メゾットを 「.(ドット)」を付けて 使います

move_forward()
pythonしよう!動き02:move_forward()関数の解説
スック
スック

あれっ? boonボーンは、動いたけど 消えていったよ…

ラッチ先生
ラッチ先生

つぎに、
左右の端に 触れたら 跳ね返るようにします。
boonが 左右の端に触れた時の x座標を確認しましょう

boonボーンの画像は、100px × 100px

スクリーンの右端のx座標は、800(WIDTHワイド

boonボーンが、右端に触れる時のx座標は、

800(WIDTHワイド)ー 50 = 750

つまり、
boonボーンが x座標:750 の時に 右壁に触れる

pythonしよう!動き02:boonの画像解説
pythonしよう!動き02:スクリーンの右端に触れた時のboonのx座標
boonが右端に触れたx座標
Python
    if boon.x > WIDTH - 50
pythonしよう!動き02:if boon.x>WIDTH-50の解説

つぎに、boonが 右端に触れる x座標は、50です

pythonしよう!動き02:スクリーンの左端に触れた時のboonのx座標
Python
    if boon.x > WIDTH - 50 or boon.x < 50:
        boon.angle = 180 - boon.angle
pythonしよう!動き02:or boon.x<50の解説
pythonしよう!動き02:boon.angle=180-boon.angle の解説
ラッチ先生
ラッチ先生

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

数学の「=(イコール)」は、
プログラミングの世界では、「==」と書きます
覚えておいてね!

angle
pythonしよう!動き02:Actor()クラスのangleの解説
ラッチ先生
ラッチ先生

跳ね返った角度の求め方 『180 – boonボーン.angleアングル 』について
解説します

右端に 触れて(boon.x > WIDTH – 50)

pythonしよう!動き02:右に進むboonの角度

跳ね返ると boonボーン.angleアングルは、

boonボーン.angleアングルは、180° になります
そして、boonボーン.angleアングルに 180を 代入するよ

pythonしよう!動き02:右端に触れたら180°に回転する

これで、boonボーンは 右端に触れると 角度が180°に なって 進みます

pythonしよう!動き02:左に進むboonの角度が180°

左端に 触れて(boon.x < 50)

pythonしよう!動き02:左端に触れてboonの角度が0度になる

 跳ね返ると boonボーン.angleアングル

boonボーン.angleアングルは、0° になります
そして、boonボーン.angleアングルに 0°を 代入するよ

これで、boonボーンが 左端に触れると 角度が 0°に なって 進みます

スック
スック

左右の端の跳ね返り角度は、180-boonボーン.angleアングルを 覚えておこう!

ラッチ先生
ラッチ先生

最後に、
左に動くboonボーンの逆さを flipフリップ_y(属性)で上下反転させよう

flip_y
pythonしよう!動き02:Actor()クラスのflip_yの解説
Python
        boon.flip_y = not boon.flip_y
pythonしよう!動き02:boon.flip_y = not boon.flip_yの解説
pythonしよう!動き02:boonが右に進んでるときは、flip_yはFalse
pythonしよう!動き02:右端に触れてboonは180°になる
pythonしよう!動き02:boon.flpi_yがTrueになり、上下反転する
pythonしよう!動き02:boonが左に進んでいる時は、boon.flip_yはTrue
pythonしよう!動き02:boonが右端に触れると角度が0°
pythonしよう!動き02:boon.flip_yがFalseになる

スック
スック

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

今回は、
boonボーンが 左右に動き続けるプログラムを 作りました

ラッチ先生
ラッチ先生
boonが 左右に動き続ける
Python
import pgzrun
from pgzhelper import *

WIDTH = 800
HEIGHT = 590

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

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

def update():
    boon.move_forward(5)
    if boon.x > WIDTH - 50 or boon.x < 50:
        boon.angle = 180 - boon.angle
        boon.flip_y = not boon.flip_y

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

左右の端の跳ね返り
 ・跳ね返る角度:180 – boonボーン.angleアングル
 ・上下反転:notノット boonボーン.flipフリップ_y
この2つを 覚えておこうね!

スック
スック

はぁ~い!

ABOUT ME
ラッチ先生
ラッチ先生
こんにちは!「Pythonしよう!楽しく学べるプログラミング教室」の学長、ラッチです。 scratchのように楽しく学べるPython講座です。 ・図やアニメーションを使って、わかりやすく楽しく学べる! ・毎回の授業が新しい発見の連続! ・プログラミングの考え方が身につき、自分のやりたいことが形にできるように。 この3点をモットーにサイトを立ち上げました。 よろしくお願いします
記事URLをコピーしました