動き

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

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

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

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

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

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

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

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

学習の流れ

コードを 書こう
右キーで boonボーンを 右に動かす
左キーで boonボーンを 左に動かす
プログラムを 実行してみよう

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

ラッチ先生
ラッチ先生

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

pythonしよう!動き01:def update()関数の解説
Python
def update():
    if keyboard.right:
ラッチ先生
ラッチ先生

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

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

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

pythonしよう!動き01:変数boonの解説


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

Python
        boon.angle = 0         
ラッチ先生
ラッチ先生

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

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

angle
pythonしよう!動き01:Actor()クラスangle属性の解説
Python
        boon.move_forward(5)
pythonしよう!動き01:move_forward()メゾットの解説
move_forward()
pythonしよう!動き01:Actor()クラスの追加メゾットmove_forward()メゾットの解説
スック
スック

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

スック
スック

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

ラッチ先生
ラッチ先生

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

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

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

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

800(WIDTHワイド)ー 50 = 750

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

pythonしよう!動き01:boon画像
pythonしよう!動き01:boonが右端に当たる
boonが右端に触れたx座標
Python
        if boon.x > WIDTH - 50:
            boon.x = WIDTH - 50
pythonしよう!動き01:boonが右端に当たったら止まるプログラム
スック
スック

これで、右端に当たると 進まなくなったね

ラッチ先生
ラッチ先生

次は、boonボーンを 左に動かします
右に動かすプログラムの 下に 書きましょう

Python
    if keyboard.left:
pythonしよう!動き01:if keyboard.leftの解説
ラッチ先生
ラッチ先生

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

Python
        boon.angle = 180         
スック
スック

あらら! boonボーンが 逆さまに なっちゃっよ

boonボーンの逆さを 直すため
pgzhelperピージーゼット・ヘルパーモジュールにあるActorアクター()クラスの属性 flipフリップ_yを 使って
boonボーンの画像を 上下反転させます

Python
        boon.flip_y = True
pythonしよう!動き01:boonを上下に反転するプログラム
flip_y
pythonしよう!動き01:flip_y属性
スック
スック

おっ!なおった

Python
        boon.move_forward(5)
pythonしよう!動き01:boon.move_forward()メゾットの解説
ラッチ先生
ラッチ先生

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

スクリーンの左端のx座標は、0

boonボーンが、左端に当たる時のx座標は、50

pythonしよう!動き01:boonが左端に当たる
boonが左端に触れたx座標
Python
        if boon.x < 50:
            boon.x = 50
pythonしよう!動き01:boonが左端に当たったら止まるプログラム
スック
スック

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

ラッチ
ラッチ

おぉぉっ…と!
一度 flipフリップ_y=Trueトゥルーboonボーンを上下反転したら、
ずぅ……と そのままなんだ!
だから、
boonボーンが右向きの時は、flipフリップ_yに Flaseフォルスを 代入して
boonボーンの上下反転を 元に 戻しましょう

pythonしよう!動き01:右キーが押されたら、flip_yで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():
    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アップデート( )関数に 書く
これを 覚えてね

pythonしよう!動き01:def update()関数の解説
スック
スック

はぁ~い!

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