INDIE INDEX

Claude Codeに敵・弾・ダメージを作らせる頼み方と直し方【AIでゲーム開発】

公開 2026-09-24更新 2026-09-24Claude Code

Claude Code に4行を1回頼むと、弾・当たり・体力の減り方は頼んだとおりに動きました。スペースキーを押したままやられると GAME OVER が1フレームで消える不具合があり、症状と起こし方と望む動きを渡すと直りました。

このページの目次
  1. Claude Code に頼んだ文
  2. 頼んだとおりに動くかを数えて確かめる
  3. スペースキーを押したままだと GAME OVER が1フレームで消えた
  4. Claude Code に直すために渡した文
  5. 直した結果を同じ数え方で確かめる
  6. 情報源

Claude Code に頼んだ文

空の作業フォルダを1つ決め、Claude Code に次の文を1回だけ渡しました。自機・敵・弾・体力と、体力が0になったときの動きを、それぞれ1文ずつ書いています。

Claude Codeに敵・弾・ダメージを頼んだ文

作業フォルダは D:\Claude_Game_Site\drafts\W-141-A\enemy-bullet-damage.play\ だけです。このフォルダの外は読まない・書かないでください。

ブラウザで開くだけで遊べる HTML ファイル1つ(game.htm)を作ってください。 画面の下に左右キーで動く自機を置いて、スペースキーで上に弾を撃てるようにして。画面の上には左右に動く敵を3体置いて、敵も下に向かって弾を撃ってくるようにして。 弾が当たったら敵の体力を1減らして、0になったら消して。自機も体力3にして、敵の弾に当たったら1減って、0でゲームオーバーにしてください。

できたら、作ったファイルの道と、どう作ったか(弾・当たり・ダメージの仕組み)を短く返してください。

Claude Code は HTML ファイルを1つ作り、仕組みを次のように説明しました。

  • スペースキーを押している間、15フレームに1発ずつ弾を出す(続けて出しすぎないための待ち時間)。
  • 当たりは、弾と敵(または自機)を四角とみなし、四角どうしが重なっているかで決める。
  • 自機の弾が敵に当たると、弾を消して敵の体力を1減らす。敵の弾が自機に当たると、弾を消して自機の体力を1減らす。
  • 敵の体力は3。自機の体力が0で GAME OVER、敵を全部倒すと CLEAR! が出て、どちらもスペースキーでやり直せる。

四角どうしの重なりで当たりを決める形は、軸にそろった四角どうしの当たり判定(AABB)と呼ばれ、2つの四角の4つの辺のあいだにすき間が1つも無いときに「当たった」とみなします。当たり判定の考え方は当たり判定(コリジョン)にまとめています。

頼んだとおりに動くかを数えて確かめる

見た目で「動いている」と分かっても、「1発で1だけ減るか」「重なっている間に何度も減らないか」は目では確かめきれません。そこで、画面を持たないブラウザで game.htm を開き、キーを送りながら、画面に描かれた体力の数字と敵の体力を1フレームずつ記録しました。フレームは、ブラウザが画面を描き直す1回ぶんで、このゲームは描き直しのたびに1回、弾や敵を動かしています。描き直しの回数は画面のリフレッシュレートにそろい、1秒に60回の画面が最も多く、75回・120回・144回の画面もあります(フレームレート)。

数えたものと、その結果です。確かめるときは、乱数の種を決めて、同じ動きを何度でも再現できるようにしました。

確かめたこと どう押したか 結果
スペースキーを押し続けたときの弾の間隔 自機を真ん中に置き、スペースキーを押したまま 15フレームごとに1発(262回。やり直しの直後だけ16フレーム)
自機の弾が敵に当たったときの減り方 同じ 敵の体力が減った43回すべてで、減り幅は1。0になった13回すべてで、敵はそのフレームで消えた
敵の弾が自機に当たったときの減り方 撃たずに真ん中で立ったまま、乱数の種を変えて40回 当たった119回すべてで、減り幅は1。重なっている間に続けて減ることは無かった。続けて当たった間隔は、いちばん短くて54フレーム
体力が0になったとき スペースキーを離して、立ったまま 3回目に当たったフレームで GAME OVER。そのあと確かめた146フレームのあいだ出たまま
やり直したとき GAME OVER のあとでスペースキーを押す 次のフレームで体力3、敵3体の体力3、画面の弾0個に戻った
コンソールの赤い文 すべての試しで ゲームのコードから出たエラーは0件

弾・当たり・体力の減り方は、頼んだ文のとおりに動いていました。

Claude Codeが作ったゲームを遊んでいる途中の画面。上に体力のバーが減った赤い敵が3体、下に水色の自機、そのあいだに黄色の自機の弾と橙色の敵の弾が飛んでいる

スペースキーを押したままだと GAME OVER が1フレームで消えた

弾はスペースキーを押し続けて撃つ作りなので、遊ぶあいだはスペースキーを押したままになります。その状態で自機の体力が0になると、GAME OVER の画面が1フレームだけ出て、次のフレームでは体力3・敵3体の最初の状態に戻っていました。敵を全部倒したときの CLEAR! も同じでした。

  • スペースキーを押したまま乱数の種を変えて30回遊ぶと、GAME OVER になったのは4回で、4回とも GAME OVER の文字が描かれたのは1フレームだけでした。
  • スペースキーを押したまま CLEAR! になった4回も、4回とも1フレームだけでした。
  • スペースキーを離しているときにやられると、GAME OVER は出たままになりました(前の節の表)。

1フレームは約0.017秒なので、やられたのか勝ったのかが、ほぼ見えないまま次のゲームが始まります。

スペースキーを押したまま体力が0になったフレームで止めて撮った GAME OVER の画面。この画面は1フレームだけで、次のフレームでは体力3に戻っていた

キーボードのキーを押すと keydown というできごとが起き、離すと keyup が起きます。キーを押したままにすると、keydown が自動で繰り返し起き(そのときは repeat という印が付きます)、keyup は離したときに1回だけ起きます。このゲームは、キーが「いま押されているか」を keydown と keyup で覚えていて、弾を撃つときにも、やり直すときにも、同じ「スペースキーがいま押されているか」を見ていました。

Claude Code に直すために渡した文

コードのどこが悪いかを知らなくても書けることだけで、直すための文を作りました。入れたのは次の3つです。

  1. 起きたこと:何をしているときに、画面がどうなったか。数えた数字(1フレーム・約0.017秒・4回中4回)と、スペースキーを離しているときは起きないこと。
  2. 起こし方:開いてから起きるまでの手順を番号で。
  3. こうなってほしい:望む動きと、直したあとに何を確かめて返してほしいか。

作ったときとは別の新しい Claude Code に、次の文をそのまま1回渡しました。1行目の作業フォルダの断りのほかは、上の3つだけです。

Claude Codeに直しを頼んだ文

作業フォルダは D:\Claude_Game_Site\drafts\W-141-A\enemy-bullet-damage.play\ だけです。このフォルダの外は読まない・書かないでください。直すのは game.htm です。

game.htm を遊んでいて困ったことがあります。直してください。 【起きたこと】スペースキーを押しっぱなしにして弾を撃ち続けていると、自機の体力が0になった瞬間に「GAME OVER」がほんの一瞬だけ出て、すぐに体力3・敵3体の最初の状態から始まってしまいます。やられたことに気づけません。敵を全部倒したときの「CLEAR!」も同じで、一瞬で消えて次のゲームが始まります。画面を1コマずつ調べると、GAME OVER も CLEAR! も1コマ(約0.017秒)しか出ていませんでした。4回やられて4回とも、CLEAR! になった4回も4回とも同じでした。スペースキーを離しているときにやられた場合は、GAME OVER はちゃんと出たままになります。 【起こし方】1. game.htm を開く 2. スペースキーを押しっぱなしにして撃ち続ける(離さない) 3. そのまま敵を全部倒すか、敵の弾に3回当たる 【こうなってほしい】・GAME OVER と CLEAR! の画面は、スペースキーを押し続けていても、読めるまで出たままにしてほしい。・やり直しは、その画面が出たあとで、スペースキーを一度離してから押したときにだけ始まってほしい。・直したら、スペースキーを押しっぱなしのまま体力が0になったとき、GAME OVER が出たままになるかを確かめてから返してください。

直した結果を同じ数え方で確かめる

Claude Code の説明では、やり直しの判定がスペースキーの押されたままの状態をそのまま見ていたため、押したままやられると次のフレームでやり直しが始まっていました。直し方は、GAME OVER や CLEAR! になった瞬間にスペースキーが押されていたら、やり直しを受け付けない印を立て、スペースキーを離したとき(keyup)にその印を下ろす、というものでした。

Claude Code は、ブラウザでキーを押す試しはできなかったので、最後の確かめは手元でしてほしい、とも返しました。そこで、直す前と同じやり方で数え直しました。

確かめたこと 直す前 直したあと
スペースキーを押したまま体力が0になったあと、GAME OVER が出ていたフレーム 1フレーム 押したままの300フレームのうち300フレーム
スペースキーを押したまま敵を全部倒したあと、CLEAR! が出ていたフレーム 1フレーム 押したままの300フレームのうち300フレーム
そのあとスペースキーを離したとき 離しただけでは GAME OVER のまま(30フレーム)
離してからもう一度押したとき 次のフレームで体力3・敵3体の体力3・画面の弾0個に戻った

前にうまくいっていたことも、同じ乱数の種で数え直しました。弾の間隔は15フレームのまま、敵の体力の減り幅はすべて1、立ったまま当たったときの減り幅もすべて1で、続けて当たった間隔のいちばん短いものは54フレームのままでした。コンソールに、ゲームのコードから出たエラーは0件でした。

直したあと、スペースキーを押したまま体力が0になってから300フレーム目に撮った画面。GAME OVER が出たままになっている

この試しでは、直す前に数えたものを同じやり方で数え直したので、直ったことと、前にうまくいっていたことが崩れていないことを、同じ数字で見比べられました。コンソールに赤い文が出て動かないときの渡し方は、コンソールの赤い文を渡して直した例にまとめています。敵の列を撃つゲームを1回の依頼で作った記録は、シューティングの作例にあります。

情報源

Claude Code のほかのページ

このページに出た言葉