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

避けゲームを作ろう(基本)

🎯 きょうのミッション

これまでの全部を組み合わせて避けゲームの基本形を作ります。プレイヤーは横に動けて、上から落ちる赤いボールを避ける。当たったら「ゲームオーバー」。

🧠 できるようになること

  • Lv3で学んだ全要素を組み合わせる
  • 実際に遊べるゲームを完成させる
  • ゲーム作りの達成感を得る

🧰 用意するもの

🖼 できあがり

下にいるプレイヤーを左右の矢印キーで動かして、上から落ちてくるボールを避けます。当たったらゲームオーバー。

📺 実行結果
(避けゲームのプレイ画面。ボールが落ちてくる)

🚀 やりかた

  1. プレイヤー(下)と敵ボール(上から落下)を作る。
  2. 敵ボールは y を毎ループ減らす。下まで来たら上にリセット& x ランダム。
  3. プレイヤーは矢印キーで左右に動く。
  4. 当たり判定。距離30以下なら「💥 ゲームオーバー」+ break。

🐍 きょうのコード

Python main.py
import turtle
import random

screen = turtle.Screen()
screen.bgcolor("black")

player = turtle.Turtle()
player.shape("square")
player.color("cyan")
player.penup()
player.goto(0, -200)

enemy = turtle.Turtle()
enemy.shape("circle")
enemy.color("red")
enemy.penup()
enemy.goto(random.randint(-200, 200), 200)

def go_left(): player.setx(player.xcor() - 25)
def go_right(): player.setx(player.xcor() + 25)
screen.onkey(go_left, "Left")
screen.onkey(go_right, "Right")
screen.listen()

while True:
    enemy.sety(enemy.ycor() - 6)
    if enemy.ycor() < -250:
        enemy.goto(random.randint(-200, 200), 200)
    if player.distance(enemy) < 25:
        print("💥 ゲームオーバー!")
        break
▶ Trinketを開いて動かす

上のコードをコピーして、Trinketの左のエリアに貼り付け、Runボタン(▶)を押すと動きます。

💡 きょうのポイント

これは立派なゲームです。プレイヤー操作・敵の自動移動・当たり判定・終了条件、すべてそろった構造。あとは敵を増やしたりスコアを足したりすれば、もっと面白くなります。

🎮 チャレンジ

  • 敵のスピードをだんだん速くしよう
  • 敵を3個に増やそう
  • プレイヤーの操作キーを WASD にも対応

🔁 ふりかえり

  • ゲームを自分で作るとプレイするのとどう違う感覚?
  • 次回スコアを入れるとどう変わる?
  • 市販のゲームの作り方も、土台は同じ?

👨‍👩‍👧 おうちの人・先生へ

  • 準備:Trinket キャンバスにフォーカスを当ててからプレイします。キーが反応しないときは、まずキャンバスをクリックします。
  • つまずきポイントwhile True 内のループが速すぎたら time.sleep(0.02) で調整します。使う場合は先頭に import time も必要です。
  • 声かけ例:「動いたら完成」ではなく、「速さ・当たり判定・遊びやすさを調整するところまでゲーム作り」と伝えると、改造の目的がはっきりします。