INDIE INDEX

AI に移動と当たり判定を作らせる頼み方と、動かないときの直し方

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

Claude Code に3行で頼むと、矢印キーで動く四角と壁のゲームができました。壁の手前で2ピクセル離れて止まったので、押したキー・止まった位置の数字・望む動きを渡すと、すき間0でぴったり止まるように直りました。

このページの目次
  1. Claude Code に頼んだ文
  2. できたゲームと、当たり判定のしくみ
  3. 動かして分かったこと:壁の手前で2ピクセル離れて止まる
  4. 直すために Claude Code に渡した文
  5. 直した結果:すき間0で壁にくっつく
  6. 情報源

Claude Code に頼んだ文

作るものは、ブラウザで開くだけで遊べる HTML ファイル1つです。矢印キーで動く四角いキャラクターと、画面の中に置いた壁のブロックを頼みました。この文の前に1行、作業フォルダ(game.htm を置くフォルダ)の外は読まない・書かないでほしい、と書き添えています。

Claude Code に頼んだ文

ブラウザで開くだけで遊べる HTML ファイル1つ(game.htm)を作ってください。
矢印キーで動く四角いキャラクターと、画面の中にいくつか置いた壁のブロックを作って。キャラクターは壁にぶつかったら止まって、壁の中に入らないようにしてください。画面の外にも出ないようにして。

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

Claude Code(モデルは Sonnet 5)に、1回だけ頼みました。

できたゲームと、当たり判定のしくみ

できた game.htm を開くと、横480×縦360ピクセルの画面に、青い四角(24×24ピクセル)と灰色の壁が4つ並びました。矢印キーを押している間、四角は1回の描き直しにつき3ピクセルずつ動きます。game.htm を読んで確かめると、押されたキーは ArrowUpArrowDownArrowLeftArrowRight の4つの名前で見分け、描き直しは requestAnimationFrame を呼んで続けていました。

Claude Code は、当たり判定の仕組みをこう説明しました。

  • キャラクターも壁も「横の位置・縦の位置・幅・高さ」を持つ四角として扱い、2つの四角が重なっているかを4つの大小の比べで調べる。
  • 動かす前に「動いたあとの位置」を仮に計算し、そこで壁と重なるなら動かさない。
  • 横と縦を別々に調べるので、斜めに押して片方だけ壁にぶつかっても、もう片方には動ける。
  • 画面の外へは、端の位置で止まるように数を抑える。

四角どうしが重なっているかを4つの比べで調べる方法は、回転していない四角どうしに使える、単純な形の当たり判定です。

動かして分かったこと:壁の手前で2ピクセル離れて止まる

できたゲームを、画面を持たないブラウザで開き、キーを押したままにして四角の位置を読みました。四角の位置は、画面の青い画素の左上の角で測りました。どの場面も読み込み直した直後(四角の左上が横40・縦40)から始めています。

頼んだことのうち、次の4つはできていました。

  • 壁にぶつかると止まり、壁の中には入りませんでした。
  • 右と下を同時に押すと、縦長の壁に沿って下へ滑り、角で引っかかりませんでした。
  • 画面の四辺では、端でぴったり止まり、外に出ませんでした(左と上は0、右は456、下は336)。
  • ゲームそのものから出た赤いエラーの文は、コンソールに0件でした。

うまくいかなかったのは、壁との間のすき間です。

  1. 開いてすぐ右矢印キーだけを押し続けると、四角は左上の縦長の壁に当たって、押し始めから29回目の描き直しで止まりました。
  2. 止まった位置は横124で、四角の右端は148です。壁の左の面は150なので、2ピクセルのすき間が空いていました。
  3. そのまま右と下を押すと、四角は横124のまま、すき間を空けたまま壁沿いに下りました。
  4. いったん左矢印キーで画面の左端まで行ってから右矢印キーを押すと、同じ壁に横126で止まりました。こちらはすき間0です。同じ壁でも、どこから来たかで止まる位置が2ピクセル変わりました。
  5. 右上の縦長の壁に右側から近づくと、四角の左端が405で止まりました。壁の右の面は404なので、1ピクセルのすき間です。

直す前のゲーム画面。青い四角が左上の縦長の灰色の壁の左に並んでいるが、壁との間にわずかなすき間がある

直す前の同じ場面を8倍に拡大した画面。青い四角と灰色の壁の間に、2ピクセル分の明るいすき間が縦に通っている

拡大すると、青い四角と壁の間に明るい線が通っているのが分かります。

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

直し方のコードは書かずに、見たことだけを渡しました。渡した文に入れたのは次の4つです。

  • 何をしたら起きるか(開いてすぐ、どのキーを押し続けたか)
  • 見た症状と、その数字(四角の右端と壁の左端の位置、すき間の幅)
  • 別の近づき方ではどうなったか(左端から来るとすき間0、右上の壁では1ピクセル)
  • 望む動きと、今うまくいっていて崩してほしくないこと

数字は画面の画素を読んで測りましたが、上の拡大した画面のように、絵を大きくして数えることもできます。コンソールに赤いエラーが出ていないことも書き添えました。エラーが出ていたら、その文をそのまま貼るところです(コンソールに赤いエラーの文が出たときの直し方)。

渡した相手は、作ったときとは別に新しく始めた Claude Code(Sonnet 5)で、1回だけ渡しました。作業フォルダの外は読まない・書かないでほしい、直すのは game.htm だ、という1行に続けて、次の文をそのまま渡しています。

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

game.htm を動かしてみて、困ったことが1つあります。直してください。
【何をしたら起きるか】ゲームを開いてすぐ、右矢印キーだけを押し続けます。青い四角が、左上の縦長の灰色の壁に当たって止まります。
【見た症状】止まった青い四角と壁の間に、2ピクセルのすき間が空いています(画面を拡大して数えました。四角の右端が x=148、壁の左端が x=150 でした)。そのまま下矢印キーも押すと、すき間を空けたまま壁沿いに下りていきます。いったん左矢印キーで画面の左端まで行ってから右矢印キーを押すと、今度は同じ壁にすき間なくぴったり止まります。どこから近づいたかで、止まる位置が変わります。右上の縦長の壁に右側から近づいたときも、1ピクセルのすき間が空いて止まりました(壁の右端が x=404、四角の左端が x=405)。コンソールに赤いエラーは出ていません。
【望む動き】どの壁に、どの向きから、どこから近づいても、壁にすき間なくぴったりくっついて止まってほしいです。今うまくいっていること(壁の中に入らない・画面の外に出ない・斜めに押すと壁沿いに滑る)は、そのままにしてください。直したら、何を変えたかを短く教えてください。

直した結果:すき間0で壁にくっつく

Claude Code は、原因と直したことをこう説明しました。

  • 1回に3ピクセルずつ進むので、次の1歩で壁に重なるときに「その場で止める」だけだと、止まった所と壁の間に3ピクセル未満のすき間が残る。どこから来たかで、すき間が2ピクセルだったり0だったりしたのはそのため。
  • 壁に重なると分かったときは、動かさないのではなく、壁の面にぴったり合う位置まで寄せるように変えた。横と縦の両方で同じように変えた。

Claude Code は、自分で作った確かめ用の小さな台本で、すき間が0になったことを確かめたと返しました。ブラウザでキーを押して確かめたのは、次の試しです。

直ったファイルを、直す前とまったく同じ押し方で試し直しました。

押し方 直す前 直したあと
開いてすぐ右を押し続ける(左上の壁の左の面) 横124で止まる・すき間2ピクセル 横126で止まる・すき間0
左端まで行ってから右を押し続ける(同じ壁) 横126で止まる・すき間0 横126で止まる・すき間0
右上の壁に右側から近づく(壁の右の面は404) 左端405で止まる・すき間1ピクセル 左端404で止まる・すき間0
右と下を同時に押す(左上の壁に沿って) 横124のまま下へ滑る 横126のまま下へ滑る
画面の四辺に向かって押し続ける 0・456・336でぴったり止まる 0・456・336でぴったり止まる

どこから近づいても、左上の壁の左の面では横126に止まるようになりました。壁の中に入らないこと、斜めに押すと壁沿いに滑ること、画面の外に出ないことも、直す前と同じでした。ゲームそのものから出た赤いエラーの文は、直したあとも0件です。

直したあとのゲーム画面。青い四角が左上の縦長の灰色の壁の左の面にくっついて並んでいる

直したあとの同じ場面を8倍に拡大した画面。青い四角と灰色の壁の間にすき間が無い

今回の記録では、ゲームを作るときの頼んだ文に「ぴったりくっついて止まる」ことは入れていませんでした。直すときの文には、押したキー、止まった位置の数字、どこから来たかによる違い、崩してほしくないことを入れ、1回で直りました。Claude Code 全体の使い方は Claude Code のページ、ゲームを1本作るところからの記録は Claude Code で初心者がブラウザゲームを作るページにあります。

情報源

Claude Code のほかのページ

このページに出た言葉