かんたんブロック崩しを作ろう
ファミコンの名作ブロック崩しの土台を作ります。下のバーを左右に動かしてボールを跳ね返す。シンプルだけど熱中するゲーム。
🧠 できるようになること
- バー(パドル)を矢印キーで操作できる
- ボールがバーで跳ね返るしくみを作れる
- 古典的ゲームの基本構造を再現できる
🧰 用意するもの
- パソコン
- ブラウザ(Chrome / Edge / Safari)
- インターネット接続
- Trinket(https://trinket.io/python)
🖼 できあがり
下のバーを矢印キーで動かして、ボールを跳ね返します。バーで取り損なうと下に落ちてゲームオーバー。
📺 実行結果
(ブロック崩しのプレイ画面。バーでボールを跳ね返す)
🚀 やりかた
- プレイヤー用のバー(横長)を下に配置。
- ボールは斜めに動く(dx, dy 両方)。
- 壁・天井で跳ね返り。
- バーに当たったら dy を反転。
- 床に落ちたらゲームオーバー。
🐍 きょうのコード
Python
main.py
import turtle
screen = turtle.Screen()
screen.bgcolor("black")
paddle = turtle.Turtle()
paddle.shape("square")
paddle.shapesize(stretch_wid=1, stretch_len=5)
paddle.color("cyan")
paddle.penup()
paddle.goto(0, -200)
ball = turtle.Turtle()
ball.shape("circle")
ball.color("white")
ball.penup()
dx, dy = 4, -4
def go_left(): paddle.setx(paddle.xcor() - 30)
def go_right(): paddle.setx(paddle.xcor() + 30)
screen.onkey(go_left, "Left")
screen.onkey(go_right, "Right")
screen.listen()
while True:
ball.setx(ball.xcor() + dx)
ball.sety(ball.ycor() + dy)
if ball.xcor() > 280 or ball.xcor() < -280:
dx = -dx
if ball.ycor() > 280:
dy = -dy
if ball.ycor() < -180 and abs(ball.xcor() - paddle.xcor()) < 60:
dy = -dy
if ball.ycor() < -250:
print("💥 GAME OVER")
break
上のコードをコピーして、Trinketの左のエリアに貼り付け、Runボタン(▶)を押すと動きます。
💡 きょうのポイント
shapesize で形を引き伸ばしてバーを作ります。バー判定は「ball の y が低くてかつ x がパドルに近い」で。シンプルですが熱中性高い。
🎮 チャレンジ
- 上にブロックを並べて、当たったら消えるようにしよう
- ボールの速度を5にあげよう
- 「失敗回数3回まで」のライフ制にしよう
🔁 ふりかえり
- ブロック崩しの楽しさはどこにある?
- 速度を上げると難しくなる。バランスはどう取る?
- 次回はシューティング
👨👩👧 おうちの人・先生へ
- 準備:キャンバスをクリックしてから矢印キーを押します。パドルが速すぎる・遅すぎる場合は、
30の移動量を調整します。 - つまずきポイント:
shapesizeの引数。stretch_widが縦、stretch_lenが横です。当たり判定はabs(ball.xcor() - paddle.xcor()) < 60の60で横幅を調整します。 - 声かけ例:「バーの長さやボールの速さを変えると難易度が変わる」と伝え、ゲームバランスの調整につなげます。