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

ボールが動くアニメ

🎯 きょうのミッション

キー入力なしで自動的に動くボール。game_loop 関数の中でgoto 座標を少しずつずらせば、アニメになります。

🧠 できるようになること

  • turtle.Turtle() で個別の亀を作れる
  • goto(x, y) で位置を直接指定できる
  • ontimer のくりかえしでアニメーションが作れる

🧰 用意するもの

  • パソコン
  • ブラウザ(Chrome / Edge / Safari)
  • インターネット接続
  • このページの「▶ このページで実行」ボタン(絵もゲームもそのまま動きます)
  • Trinket(予備の実行サイト:https://trinket.io/python)

🖼 できあがり

赤いボールが画面の左から右へ自動的に動いていきます。

📺 実行結果
(赤いボールが左から右へ移動します)

🚀 やりかた

  1. ball = turtle.Turtle() でボール用の亀を作る。
  2. ball.shape("circle") + color("red")。
  3. ball.penup() で線を引かない。
  4. x = -200 初期位置。game_loop の中で x += 5 + goto(x, 0)、最後に ontimer で次のコマを予約。
  5. 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を開いて動かす

このページの「▶ このページで実行」でそのまま動きます。キー操作のゲームは、絵をクリックしてからキーを押してね。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 の数字を小さくして調整します。
  • 声かけ例:「アニメは、少し動かして、また少し動かすことのくりかえし」と伝えると、ゲームキャラの動きとつながります。