背景
プログラミング教室の生徒(Scratch歴4年)から「テキストベースのプログラミングを学びたい」という要望があり、Pythonでゲームを作ることにしました。
「どんなゲームを作りたい?」と聞いたところ、好きな「青鬼」(ブラウザゲーム)にちなんで鬼ごっこにしようということになりました。
※Scratchとは、教育用プログラミング言語suicaで、画面上のブロックをパズルのように組み合わせるだけで、直感的にゲームなどを制作できるものです。
作り方の方針
AIが作成したプログラムをまず動かして体感で理解し、その後プログラムのテキストを読む方針としました。 いきなり完成品を作ると複雑になりプログラムを理解するのが厳しいので、段階的に機能を積み上げる教材としました。
Step 1 ウィンドウを出すだけ
Step 2 プレイヤーを動かす
Step 3 鬼を置く(静止)
Step 4 鬼が直線で追いかける
Step 5 壁と衝突判定
Step 6 ゴールとGame Over
Step 7 グリッドマップー地図を簡単に作れるようにする
Step 8 BFS(幅優先探索)で最短経路を探すー鬼が壁にひっかからないようにする
Step 9 鬼が経路に沿って動く
Step 10 定期的に経路を再計算
Step 11〜14 壁の角での引っかかりなど細かいバグ修正
生徒はScratchで学んだ「ループ・条件分岐・変数」の概念がそのままPythonに対応していたため、思ったよりスムーズに理解できました。
Web公開について
pygbag というツールで Python/pygame のコードを WebAssembly に変換し、GitHub Pages で公開しました。ブラウザで動くのでインストール不要です。ただしキーボード操作のみのため PC限定 です。