当たり判定を作ろう
プレイヤーとボールが接触しているかを判定します。distance メソッドで2つの亀の距離を一発計算。距離が一定以下なら「当たった!」。
🧠 できるようになること
distanceで2点の距離が計算できる- 条件分岐で当たり判定が書ける
- ゲームのコア機能の1つを完成させる
🧰 用意するもの
- パソコン
- ブラウザ(Chrome / Edge / Safari)
- インターネット接続
- Trinket(https://trinket.io/python)
🖼 できあがり
プレイヤーをボールに近づけると「💥 当たった!」と表示されます。
📺 実行結果
(プレイヤーがボールに触れると💥 当たった!が表示されます)
🚀 やりかた
- プレイヤーとボールを別々に作る。
- 矢印キー操作で player を動かす。
- while True で
player.distance(ball)を計測。 - 距離が30以下なら
print("💥 当たった!")+ break。
🐍 きょうのコード
Python
main.py
import turtle
screen = turtle.Screen()
ball = turtle.Turtle()
ball.shape("circle")
ball.color("red")
ball.penup()
ball.goto(100, 0)
player = turtle.Turtle()
player.shape("square")
player.color("blue")
player.penup()
def go_up(): player.sety(player.ycor() + 10)
def go_down(): player.sety(player.ycor() - 10)
def go_left(): player.setx(player.xcor() - 10)
def go_right(): player.setx(player.xcor() + 10)
screen.onkey(go_up, "Up")
screen.onkey(go_down, "Down")
screen.onkey(go_left, "Left")
screen.onkey(go_right, "Right")
screen.listen()
while True:
if player.distance(ball) < 30:
print("💥 当たった!")
break
screen.update()
上のコードをコピーして、Trinketの左のエリアに貼り付け、Runボタン(▶)を押すと動きます。
💡 きょうのポイント
player.distance(ball) で2つの亀の距離がピクセル単位で計算されます。「30以下」を「当たった」と決めます。これがすべてのゲームの当たり判定の基本。
🎮 チャレンジ
- ボールも自動で動くようにしよう(避ける必要が出る)
- ボールが3個あって、どれかに触れたらアウトに
- 「当たった!」の代わりに別のアクション(色変化など)
🔁 ふりかえり
distanceがない世界で当たり判定はどう書く?- 「30以下」の30はどうやって決める?
- 次回は本格ゲーム。当たり判定をどう使う?
👨👩👧 おうちの人・先生へ
- 準備:キー操作があるため、キャンバスをクリックしてから動作確認します。
- つまずきポイント:当たり判定の数字が小さすぎると当たりにくく、大きすぎると離れていても当たります。
30を20や50に変えて、判定の広さを体感します。 - 声かけ例:「当たり判定は正解が1つではなく、遊びやすい数字を探すもの」と伝えると、調整の意味が分かります。