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

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


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

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


学習の流れ
コードを 書こう
boonを 上に向けて 動かす

まずは、
Actor()クラスの属性angleで boonを 上に向けます
Actor()クラスは、キャラクターを作る設計図です。
7. boon = Actor(“boon“, (400, 300))
変数boonには、Actor()クラス(設計図)が 入っています。

Actor()クラスに入っている
・ angle(キャラクターの向き)
・ move_forward (キャラクターを 動かす)
・ y (キャラクターの y座標)
属性(データ)と メゾットを 「.(ドット)」を付けて 使います
boon.angle = 90

オブジェクトとは
設計図(クラス)で 作り出されたもの
・ キャラクター
・ キーボード
・ 背景 など
boonオブジェクト

設計図(クラス)は、
変数に 名前を付けて 保存する


プログラミングの世界では、
「=」は、代入する。
つまり、
boon.angleに、「90(データ)」を 代入する と言うこと
数学の「=(イコール)」と 違うからね
数学の「=(イコール)」は、
プログラミングの世界では、「==」と書きます
覚えておいてね!


そして、
boonを動かすプログラムは、「def update():」関数で 作ろう

def update():
boon.move_forward(5)



あららっ! 消えていったよ
上下の端に 触れたら 跳ね返る

つぎに、
上下の端に 触れたら 跳ね返るようにします。
boonが 上下の端に触れた時の y座標を確認しましょう
boonの画像は、100px × 100px
スクリーンの上端のy座標は、0
boonが、上端に当たる時のy座標は、50
つまり、
boonが y座標:50 の時に 上壁に当たる


if boon.y < 50

つぎに、
スクリーンの下端のy座標は、590(HEIGHT)
boonが、下端に触れる時の y座標は
590(HEIGHT)ー 50 = 540
つまり、
boonが y座標:540 の時に 下端に触れる

if boon.y < 50 or boon.y > HEIGHT - 50:
boon.angle = -boon.angle



跳ね返った角度の求め方 『- boon.angle 』について
解説します
① boonが上に動く時は、boon.angleは 90°
上端に 触れて(boon.y < 50)

跳ね返ると boon.angle は
② -1 × boon.angle (90) = -90°
boon.angle は、-90° になります
そして、boon.angleに 代入するよ
③ boon.angle = -90

これで、boonは 上端に触れると 角度が-90°に なって進みます

① boonが 下に動いている時の boon.angleは -90°
下端に 触れて(boon.y > HEIGHT – 50)

跳ね返ると boon.angle は
② -1 × boon.angle(-90)= 90°
boon.angleは、90°になります。
そして、boon.angleに 90°を 代入するよ
③ boon.angle = 90(-boon.angle(-90))
これで、boonが下端に触れると 角度が 90°になって 進みます

これで、今回の学習は終了! おつかれさま
まとめ
今回は、
boonが 上下に動き続けるプログラムを 作りました

import pgzrun
from pgzhelper import *
WIDTH = 800
HEIGHT = 590
boon = Actor("boon", (400, 300))
boon.angle = 90
def draw():
screen.fill("white")
boon.draw()
def update():
boon.move_forward(5)
if boon.y < 50 or boon.y > HEIGHT - 50:
boon.angle = -boon.angle
pgzrun.go()

上下の端の跳ね返り
・跳ね返る角度:- boon.angle
これを 覚えておこうね!

はぁ~い!