プレイヤーを矢印キーで動かそう
矢印キーで上下左右に自由に動かせるプレイヤーを作ります。第76回はカクカク動くだけでしたが、今回はゲームっぽい滑らかな操作。
🧠 できるようになること
- 矢印キーで上下左右の操作ができる
- x, y 座標を直接変える操作系が書ける
- ゲームの操作部分の基本が完成する
🧰 用意するもの
- パソコン
- ブラウザ(Chrome / Edge / Safari)
- インターネット接続
- Trinket(https://trinket.io/python)
🖼 できあがり
青い四角のプレイヤーが、矢印キーで自由に動きます。これがゲームのキャラ操作の基本。
📺 実行結果
(矢印キーで青い四角が画面内を自由に動き回ります)
🚀 やりかた
- プレイヤー用の亀を作る(
shape("square"))。 - 上下左右の関数で
setx/setyを変える。 onkeyで矢印キーと関数を結ぶ。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の左のエリアに貼り付け、Runボタン(▶)を押すと動きます。
💡 きょうのポイント
player.xcor()・player.ycor() で現在の座標が取れます。setx/sety で個別に座標を設定。これでスムーズな操作が作れます。
🎮 チャレンジ
STEPを変えて速さを変えよう- WASDキーでも動くようにしよう
- 「スペースキーで止まる」など特殊操作を追加
🔁 ふりかえり
onkeyとsetx/setyの組み合わせは強力?player.forward(STEP)との違いは?(向きを意識しない)- 次回は当たり判定。プレイヤーと何の判定?
👨👩👧 おうちの人・先生へ
- 準備:Trinketキャンバスをクリックしてフォーカスを当てます。キーが反応しないときは、コードより先にクリック状態を確認します。
- つまずきポイント:
screen.listen()がないとキー入力を受け取れません。screen.onkey(...)のキー名は"Up"、"Down"のように大文字小文字も確認します。 - 声かけ例:「操作できるキャラ」ができると、ゲーム作りの入口に立てます。動いたら、移動量の数字を変えて遊びやすさを比べます。