避けゲームにスコアを入れよう
避けゲームにスコア機能を追加します。敵が画面下に到達するたびに+1。スコアは画面上に write で表示。
🧠 できるようになること
turtle.writeで画面に文字を書ける- スコアを更新表示するパターンが書ける
- ゲームの完成度がぐっと上がる
🧰 用意するもの
- パソコン
- ブラウザ(Chrome / Edge / Safari)
- インターネット接続
- このページの「▶ このページで実行」ボタン(絵もゲームもそのまま動きます)
- Trinket(予備の実行サイト:https://trinket.io/python)
🖼 できあがり
避けゲームの画面上部に「スコア:N」が表示され、敵を避けるたびに数字が増えていきます。
📺 実行結果
(画面上にスコア表示のあるゲーム画面)
🚀 やりかた
scorer = turtle.Turtle()でスコア表示用の亀を作る。scorer.hideturtle()で見た目を消す。scorer.goto(-280, 250)で位置設定。- 敵が下まで行くたび
score += 1。 scorer.clear()+scorer.write(...)で更新表示。
🐍 きょうのコード
Python
main.py
import turtle
import random
screen = turtle.Screen()
screen.bgcolor("black")
screen.setup(600, 600)
screen.tracer(0)
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)
scorer = turtle.Turtle()
scorer.color("white")
scorer.hideturtle()
scorer.penup()
scorer.goto(-280, 250)
score = 0
def go_left(): player.setx(max(-275, player.xcor() - 25))
def go_right(): player.setx(min(275, player.xcor() + 25))
screen.onkey(go_left, "Left")
screen.onkey(go_right, "Right")
screen.listen()
def game_loop():
global score
enemy.sety(enemy.ycor() - 6)
if enemy.ycor() < -250:
enemy.goto(random.randint(-200, 200), 200)
score += 1
scorer.clear()
scorer.write(f"スコア:{score}", font=("Arial", 18, "bold"))
if player.distance(enemy) < 25:
scorer.goto(0, 0)
scorer.write(f"💥 ゲームオーバー!スコア:{score}", align="center", font=("Arial", 22, "bold"))
screen.update()
return
screen.update()
screen.ontimer(game_loop, 20)
game_loop()
このページの「▶ このページで実行」でそのまま動きます。キー操作のゲームは、絵をクリックしてからキーを押してね。Trinketを使うときは、上のコードをコピーして貼り付けます。
💡 きょうのポイント
turtle.write は画面に文字を描画する命令。clearで消してから書き直すのが、スコア更新の定番パターン。
update() と ontimer(game_loop, 20) で1秒あたり約50回の更新を目安にします。速さを変える実験では、一度にどちらか片方だけを変えましょう。
🎮 チャレンジ
- ハイスコアも表示しよう
- 5点ごとに敵のスピードを上げよう
- ゲームオーバーのときに「もう一度?」と聞こう
🔁 ふりかえり
- スコア表示があると、ゲームの楽しさはどう変わる?
clear+writeのパターンの仕組みは?- 次回はブロック崩しに挑戦
👨👩👧 おうちの人・先生へ
- 準備:キー操作があるため、キャンバスをクリックしてからプレイします。
- つまずきポイント:
scorer.clear()を忘れると数字が重なります。スコア表示は「消す→書く」の順番で更新すると覚えると安定します。 - 声かけ例:「スコアがあると、もう一度遊びたくなる」と伝え、遊びやすさを上げる仕組みとして見せます。