メむンコンテンツぞスキップ
芋出し画像

JavaScriptゲヌムの䜜り方 初心者向けAIのコヌドの読み方

    JavaScriptでゲヌムを䜜るなら、最初に芚えるのは曞き方ではなく「コヌドのどこを芋お、どこなら觊っおよいか」です。

    AIに頌めば数十行のゲヌムはすぐ出おきたす。ただ、出おきたコヌドは読めないず盎せたせん。

    59行の数圓おゲヌムを党文茉せ、行の塊ごずの読み方衚ず、実際に数を倉えお動かした結果を䞊べたす。

    数圓おゲヌムの党文HTML1ファむル

    題材は、1から100たでの数を7回以内に圓おる数圓おゲヌムです。HTMLずJavaScriptが1぀のファむルに入っおいたす。次のコヌドをそのたた䜿えたす。

    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta charset="UTF-8">
    <title>数圓おゲヌム</title>
    <style>
      body { font-family: sans-serif; text-align: center; margin-top: 40px; }
      #msg { font-size: 24px; min-height: 36px; }
      input { font-size: 20px; width: 80px; }
      button { font-size: 20px; }
    </style>
    </head>
    <body>
    <h1>数圓おゲヌム</h1>
    <p id="rule"></p>
    <input id="guess" type="number">
    <button id="btn">予想する</button>
    <p id="msg"></p>
    <p id="left"></p>
    <script>
    const MAX_NUMBER = 100;
    const MAX_TRIES = 7;
    let answer = Math.floor(Math.random() * MAX_NUMBER) + 1;
    let tries = 0;
    let finished = false;
    
    document.getElementById("rule").textContent =
      "1から" + MAX_NUMBER + "たでの数を" + MAX_TRIES + "回以内に圓おおください";
    
    function show(text) {
      document.getElementById("msg").textContent = text;
    }
    
    function check() {
      if (finished) return;
      const value = parseInt(document.getElementById("guess").value);
      if (isNaN(value)) {
        show("数を入れおください");
        return;
      }
      tries = tries + 1;
      if (value === answer) {
        show("正解です" + tries + "回で圓たりたした");
        finished = true;
      } else if (tries >= MAX_TRIES) {
        show("残念。答えは" + answer + "でした");
        finished = true;
      } else if (value < answer) {
        show("もっず倧きい数です");
      } else {
        show("もっず小さい数です");
      }
      document.getElementById("left").textContent = "残り" + (MAX_TRIES - tries) + "回";
    }
    
    document.getElementById("btn").addEventListener("click", check);
    </script>
    </body>
    </html>

    ファむルずしお保存しおブラりザで開く手順は、HTML1ファむルで動くゲヌムの䜜り方ず保存のしかたにたずめおありたす。ここは開けた前提で話を進めたす。

    コヌドの読み方衚を芋る

    コヌドは䞊から順に党郚読む必芁がありたせん。圹割ごずに7぀の塊に分けるず、芋る堎所が決たりたす。次の図が、塊ごずの圹割ず、觊っおよいかの目安です。行番号は、䞊のコヌドの1行目から数えたものです。

    画像

    抌さえる点は2぀ありたす。

    1぀目は、21〜22行の2぀の数字だけが「遊びの蚭定」だずいうこずです。ゲヌムの難しさを倉えたいずきは、ここだけを芋たす。

    2぀目は、同じ名前が2か所以䞊に出おくる堎所が「察になっおいる」こずです。たずえば id="guess" は16行目ず36行目に出たす。片方だけ倉えるず、もう片方が盞手を芋倱いたす。

    觊っおよい堎所の芋分け方3぀

    行の意味が分からない堎合も、芋た目で觊っおよいかの芋圓は぀きたす。次の3぀です。

    1. 党郚倧文字の名前MAX_NUMBER、MAX_TRIESは、数だけ曞き換えおよい蚭定です。実枬したのは3ず10の2通りで、0や負の数は詊しおいたせん。1以䞊の敎数にしおおくのが無難です

    2. 匕甚笊"で囲たれた日本語は、画面に出る文蚀です。匕甚笊の倖偎を倉えなければ安党です

    3. ===、<、>=、parseInt、id の名前、関数の名前は、他の行ず察になっおいるので觊りたせん。倉えたいずきは、自分で曞き換えずにAIに頌みたす

    この3぀の芋方は、この数圓おゲヌムでは通甚したした。AIが曞くコヌドは名前の付け方が違うこずがあり、その堎合は圓おはたらないこずもありたす。ほかのコヌドでは確かめおいたせん。

    数を倉えお動かす觊っおよい堎所の実枬

    読み方衚のずおりに倉えお、Node.jsの仮郚品を぀けお動かしたした。条件は次のずおりです。

    • 日付ず環境は、2026幎10月19日、Windows 11、Node.js v24.14.0

    • ブラりザの代わりに、getElementByIdずtextContentずaddEventListenerだけを持぀仮郚品を぀けお、䞊のJavaScriptを動かした

    • 乱数は固定倀に差し替えた。0.4のずきは答えが41になる

    • ブラりザの画面衚瀺ずクリック操䜜は、この実枬では芋おいない。headless Chromeでは、ファむルを開いたあずにルヌル文が「1から100たでの数を7回以内に圓おおください」ず出るこずだけ確かめた

    画像

    MAX_TRIESを3にするず、3回目で終わりたした。MAX_NUMBERを10にするず、ルヌル文の数字も自動で倉わりたした。倉えたのはMAX_TRIESの3ずMAX_NUMBERの10だけです。ルヌル文はMAX_NUMBERを぀ないで曞いおあるので、数字を1か所倉えれば足りたした。AIが出したコヌドに同じ数が䜕か所も盎接曞いおあれば、その分の曞き換えが芁りたす。

    49行目の「もっず倧きい数です」を「䞊です」に倉えた䟋では、衚瀺だけが倉わり、刀定には圱響したせんでした。画面に出す文字を倉えたいだけなら、匕甚笊の䞭だけを觊りたす。

    觊っおはいけない堎所を倉えるず䜕が起きるか

    次に、読み方衚で「×」や「△」にした堎所を、わざず倉えたした。同じ条件で動かした結果です。

    画像

    8぀の倉曎の結果は3通りに分かれたした。

    • ゚ラヌが出る倉曎が3぀=== を = に、JavaScript偎だけidを倉える、倉数名の打ち間違い

    • ゚ラヌが出ないのに、動きが狂う倉曎が4぀。ヒントが逆になる、答えが0〜99になる乱数0のずき0、回数が1回増える、parseIntを消すず正解にならない、ずいうものです

    • ゚ラヌも出ず、䜕も起きない倉曎が1぀addEventListenerの行を消す

    今回の実枬は仮郚品で゚ラヌを盎接芋おいたす。ブラりザの画面でぱラヌ文が出ず、䜕も起きないように芋える堎合がありたす未確認。画面だけでは芋分けにくいので、ルヌル文では「1から」ず蚀っおいるのに答えが0になる、ずいった食い違いは、遊んで初めお分かりたす。觊っおよい堎所を決めおおくず、こうした食い違いを自分で䜜らずに枈みたす。

    === を = にした倉曎でTypeErrorが出たのは、valueがconstだからです。letで曞かれたコヌドなら、゚ラヌなしで垞に正解になる可胜性がありたす未実枬。

    parseIntを消すず正解にならないのは、入力欄の倀が文字列のたたで、数の41ず文字の41が === で䞀臎しないためです。

    addEventListener の行を消した堎合は、ボタンを抌しおも䜕も起きたせんでした。画面に倉化がないずきの原因は、この行の抜け以倖にもありたす。

    このコヌドで䜿っおいる郚品の意味

    読み方衚に出おきた郚品のうち、仕様が決たっおいるものは、公匏のMDN Web Docsで確認したした。

    • Math.random()MDNによるず、0以䞊1未満の範囲で浮動小数点の擬䌌乱数を返したす。1は含たれたせん。23行目でMAX_NUMBERを掛けおMath.floorで切り捚お、1を足しおいるのは、結果を1からMAX_NUMBERの範囲の敎数にするためです

    • Math.floor()䞎えられた数倀以䞋の最倧の敎数を返したす

    • parseInt()MDNによるず、第1匕数を文字列に倉換しお解釈し、敎数たたはNaNを返したす。入力欄の倀を数にしお比べるために36行目で䜿っおいたす

    • getElementById()idが䞀臎する芁玠を返したす。䞀臎する芁玠がなければnullを返したす。実枬でJavaScript偎だけidを倉えたずきに「Cannot read properties of null」ず出たのは、このnullを読もうずしたためです

    • textContentノヌドずその子孫のテキストの内容を衚したす。蚭定するず、䞭の子がすべお取り陀かれ、指定した文字に眮き換わりたす

    • addEventListener()察象に特定のむベントが届くたびに呌ばれる関数を蚭定したす。56行目では、ボタンのクリックでcheckを呌ぶ玄束になっおいたす

    AIに倉曎を頌むずきの䞀蚀

    自分で觊る堎所を決めたら、頌み方も具䜓的にしたす。次の䟝頌文を、そのたた貌っお䜿えたす。

    添付のHTMLの MAX_TRIES を5に倉えおください。それ以倖の行は倉えないでください。倉えた行だけを教えおください。

    「それ以倖は倉えない」「倉えた行だけを教える」の2぀を入れおおけば、返っおきたコヌドで確認する堎所は1か所になりたす。倉える前に、元のファむルを別名でコピヌしお残しおおくず、うたくいかなかったずきに戻せたす。

    AIの䜿い方そのものは、Claude Codeの䜿い方を初心者向けにたずめた蚘事にたずめおいたす。どんなゞャンルから䜜るか迷う堎合は、ゲヌム䜜り 初心者のゞャンルの遞び方も合わせお読んでください。

    次にやるこず

    数圓おゲヌムの22行目のMAX_TRIESを5に倉えお保存し、ブラりザを再読み蟌みしお、ルヌル文が「5回以内」に倉わるかを確かめたす。

     
     
    プログラミングの経隓がない人が、AIでゲヌムを䜜り始めるずきに最初に詰たる所を、1蚘事1぀の困りごずで扱いたす。道具を入れる、画面を開く、最初の1本を動かす、たで。手順は実際に動かしお確かめた範囲だけを曞き、料金や仕様は公匏で確認した日付を付けたす。

    あなたぞのおすすめ