デジタルこどもBASEのロゴ 特定非営利活動法人デジタルこどもBASE 📚 目次
第79回 Lv3 ⏱ 15〜20分

プレイヤーを矢印キーで動かそう

🎯 きょうのミッション

矢印キーで上下左右に自由に動かせるプレイヤーを作ります。第76回はカクカク動くだけでしたが、今回はゲームっぽい滑らかな操作。

🧠 できるようになること

  • 矢印キーで上下左右の操作ができる
  • x, y 座標を直接変える操作系が書ける
  • ゲームの操作部分の基本が完成する

🧰 用意するもの

🖼 できあがり

青い四角のプレイヤーが、矢印キーで自由に動きます。これがゲームのキャラ操作の基本。

📺 実行結果
(矢印キーで青い四角が画面内を自由に動き回ります)

🚀 やりかた

  1. プレイヤー用の亀を作る(shape("square"))。
  2. 上下左右の関数で setx/sety を変える。
  3. onkey で矢印キーと関数を結ぶ。
  4. listen + mainloop

🐍 きょうのコード

Python main.py
import turtle

screen = turtle.Screen()
player = turtle.Turtle()
player.shape("square")
player.color("blue")
player.penup()

STEP = 20

def go_up():
    player.sety(player.ycor() + STEP)

def go_down():
    player.sety(player.ycor() - STEP)

def go_left():
    player.setx(player.xcor() - STEP)

def go_right():
    player.setx(player.xcor() + STEP)

screen.onkey(go_up, "Up")
screen.onkey(go_down, "Down")
screen.onkey(go_left, "Left")
screen.onkey(go_right, "Right")

screen.listen()
screen.mainloop()
▶ Trinketを開いて動かす

上のコードをコピーして、Trinketの左のエリアに貼り付け、Runボタン(▶)を押すと動きます。

💡 きょうのポイント

player.xcor()player.ycor()現在の座標が取れます。setx/sety で個別に座標を設定。これでスムーズな操作が作れます。

🎮 チャレンジ

  • STEP を変えて速さを変えよう
  • WASDキーでも動くようにしよう
  • 「スペースキーで止まる」など特殊操作を追加

🔁 ふりかえり

  • onkeysetx/sety の組み合わせは強力?
  • player.forward(STEP) との違いは?(向きを意識しない)
  • 次回は当たり判定。プレイヤーと何の判定?

👨‍👩‍👧 おうちの人・先生へ

  • 準備:Trinketキャンバスをクリックしてフォーカスを当てます。キーが反応しないときは、コードより先にクリック状態を確認します。
  • つまずきポイントscreen.listen() がないとキー入力を受け取れません。screen.onkey(...) のキー名は "Up""Down" のように大文字小文字も確認します。
  • 声かけ例:「操作できるキャラ」ができると、ゲーム作りの入口に立てます。動いたら、移動量の数字を変えて遊びやすさを比べます。