【Pygame Zero】キャラクターを左右キーで動かす

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


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

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



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

学習の流れ
プログラミングの仕方を説明します
コードを 書こう
右キーで 動かそう

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

def update():
if keyboard.right:

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

設計図(クラス)は、
変数に 名前を付けて 保存する
*Pygama zeroでは
はじめから変数keyboardに 設計図が入ってる

変数に「.(ドット)」を付ければ
keyboard.right
設計図のプログラムが 使える


右キーが 押されたら
・方向は 右
・5ピクセル 動かす
・右端より 右に行かない
この3つのプログラムを 書いていきましょう
7. boon = Actor(“boon“, (400, 300))
変数boonには、Actor()クラス(設計図)が 入っています。

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


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

boon.move_forward(5)



これで、右キーを押して、動かしてみよう

あらら! 右端へ 消えていったよ…

boonが、右端より先に 行かないようにプログラムしましょう。
boonが右端に当たる時の x座標を考えます。
boonの画像は、100px × 100px
スクリーンの右端のx座標は、800(WIDTH)
boonが、右端に当たる時のx座標は、
800(WIDTH)ー 50 = 750
つまり、
boonが x座標:750 の時に 右壁に当たる


if boon.x > WIDTH - 50:
boon.x = WIDTH - 50


これで、右端に当たると 進まなくなったね
左キーで 動かそう

次は、boonを 左に動かします
右に動かすプログラムの 下に 書きましょう
if keyboard.left:


左キーが 押されたら
・方向は 左(180度)
・5ピクセル 動かす
・左端より 左に行かない
この3つのプログラムを 書いていきましょう
boon.angle = 180

あらら! boonが 逆さまに なっちゃっよ
boonの逆さを 直すため
pgzhelperモジュールにあるActor()クラスの属性 flip_yを 使って
boonの画像を 上下反転させます
boon.flip_y = True



おっ!なおった
boon.move_forward(5)


boonが、左端より先に 行かないようにプログラムしましょう。
boonが左端に当たる時の x座標を考えます。
スクリーンの左端のx座標は、0
boonが、左端に当たる時のx座標は、50

if boon.x < 50:
boon.x = 50


あれっ? 右に動く時 逆さまになったよ

おぉぉっ…と!
一度 flip_y=Trueで boonを上下反転したら、
ずぅ……と そのままなんだ!
だから、
boonが右向きの時は、flip_yに Flaseを 代入して
boonの上下反転を 元に 戻しましょう


これで、今回の学習は終了! おつかれさま
まとめ
今回は、
左右キーを 押して boonを 動かすプログラムを 作りました

import pgzrun
from pgzhelper import *
WIDTH = 800
HEIGHT = 590
boon = Actor("boon", (400, 300))
def draw():
screen.fill("white")
boon.draw()
def update():
if keyboard.right:
boon.angle = 0
boon.flip_y = False
boon.forward(5)
if boon.x > WIDTH - 50:
boon.x = WIDTH - 50
if keyboard.left:
boon.angle = 180
boon.flip_y = True
boon.forward(5)
if boon.x < 50:
boon.x = 50
pgzrun.go()

キャラクター「boon」を 動かすプログラムは、
def update( )関数に 書く
これを 覚えてね


はぁ~い!