ボールが端で跳ね返ろう
ボールが画面の端まで行ったら跳ね返るようにします。速度(dx・dy)の符号を反転するだけ。これがゲームの当たり判定の基本。
🧠 できるようになること
- 速度ベクトルの考え方が使える
- 条件で速度を反転して跳ね返りを表現できる
- 簡単な物理シミュレーションが書ける
🧰 用意するもの
- パソコン
- ブラウザ(Chrome / Edge / Safari)
- インターネット接続
- Trinket(https://trinket.io/python)
🖼 できあがり
ボールが画面の中で上下左右に跳ね返り続けます。永遠にバウンドする楽しい動き。
📺 実行結果
(ボールが画面内で四方に跳ね返り続けます)
🚀 やりかた
x, y, dx, dyの4変数で位置と速度を管理。- ループで
x += dx、y += dy。 if x > 250 or x < -250: dx = -dxで左右の跳ね返り。if y > 250 or y < -250: dy = -dyで上下も同様。ball.goto(x, y)で表示。
🐍 きょうのコード
Python
main.py
import turtle
ball = turtle.Turtle()
ball.shape("circle")
ball.color("red")
ball.penup()
x, y = 0, 0
dx, dy = 5, 3
while True:
x += dx
y += dy
if x > 250 or x < -250:
dx = -dx
if y > 250 or y < -250:
dy = -dy
ball.goto(x, y)
上のコードをコピーして、Trinketの左のエリアに貼り付け、Runボタン(▶)を押すと動きます。
💡 きょうのポイント
「速度の符号を反転する」だけで跳ね返りが表現できます。これは現実の物理の反射と同じ考え方。簡単に物理が表現できるのがプログラミングの楽しさ。
🎮 チャレンジ
- 速度を
dx = 10に上げて高速ボールに - 壁に当たるたびに色を変えよう
- ボールを2つ作って同時に動かそう
🔁 ふりかえり
- なぜ符号を反転すると跳ね返るように見える?
- 実際のボールも同じ仕組み?(重力は無視している)
- 次回はプレイヤー操作。何が変わる?
👨👩👧 おうちの人・先生へ
- 準備:動きが速く見える場合は、
dxとdyの数字を小さくしてから試します。 - つまずきポイント:速度と位置の混同。「位置 = 今いる場所」「速度 = 1回で動く量」と区別します。跳ね返りは
dx = -dx、dy = -dyで向きだけを反対にしています。 - 声かけ例:「数字を変えると遊びやすさが変わる」と伝えると、調整もゲーム作りの一部だと分かります。