ボールが動くアニメ
キー入力なしで自動的に動くボール。game_loop 関数の中でgoto 座標を少しずつずらせば、アニメになります。
🧠 できるようになること
turtle.Turtle()で個別の亀を作れるgoto(x, y)で位置を直接指定できるontimerのくりかえしでアニメーションが作れる
🧰 用意するもの
- パソコン
- ブラウザ(Chrome / Edge / Safari)
- インターネット接続
- このページの「▶ このページで実行」ボタン(絵もゲームもそのまま動きます)
- Trinket(予備の実行サイト:https://trinket.io/python)
🖼 できあがり
赤いボールが画面の左から右へ自動的に動いていきます。
📺 実行結果
(赤いボールが左から右へ移動します)
🚀 やりかた
ball = turtle.Turtle()でボール用の亀を作る。ball.shape("circle")+color("red")。ball.penup()で線を引かない。x = -200初期位置。game_loop の中でx += 5+goto(x, 0)、最後にontimerで次のコマを予約。- 200を超えたら
x = -200でリセット。
🐍 きょうのコード
Python
main.py
import turtle
screen = turtle.Screen()
screen.tracer(0)
ball = turtle.Turtle()
ball.shape("circle")
ball.color("red")
ball.penup()
x = -200
def game_loop():
global x
x += 5
if x > 200:
x = -200
ball.goto(x, 0)
screen.update()
screen.ontimer(game_loop, 20) # 20ミリ秒後にもう一度(1秒に約50コマ)
game_loop()
このページの「▶ このページで実行」でそのまま動きます。キー操作のゲームは、絵をクリックしてからキーを押してね。Trinketを使うときは、上のコードをコピーして貼り付けます。
💡 きょうのポイント
turtle.Turtle() で新しい亀が作れます。複数のオブジェクトを動かすときに使います。penup+goto で線を引かずに位置移動。
tracer(0) で自動描画を止め、1周ごとに update() で描きます。ontimer(game_loop, 20) は「20ミリ秒後にもう一度」の予約で、端末が違っても速度を安定させる役目です。Scratchの「ずっと」をタイマーで作るイメージです。
🎮 チャレンジ
- 上下にも動くようにしよう(y も変える)
- ボールを2つ作って違う動きをさせよう
x += random.randint(1, 10)でランダムな速さに
🔁 ふりかえり
turtle.Turtle()とturtle.forward()の違いは?- アニメーションの正体は「位置を少しずつ変える」
- 次回は端で跳ね返る。何が必要?
👨👩👧 おうちの人・先生へ
- 準備:TrinketのStopボタンの場所を先に確認します。動き続けるコードなので、止め方を知ってから実行すると安心です。
- つまずきポイント:
game_loop()を最初に1回呼び忘れると何も動きません。速すぎるときはx += 5の数字を小さくして調整します。 - 声かけ例:「アニメは、少し動かして、また少し動かすことのくりかえし」と伝えると、ゲームキャラの動きとつながります。