JOURNAL

【JS超入門 第4回】『もし大吉なら?』の条件分岐(if)と、一瞬で回す『10連ガチャ』ループ(for)

前回は、関数 hoge() のカッコの秘密と、最初から用意されている便利な組み込み関数(Math.random())を使って、ランダムにおみくじを引く技を覚えましたね。

今回は、ゲームをさらに面白くするための2大魔法、『もしも(条件分岐)』『何回も(ループ・繰り返し)』を学んでいきましょう!スマホゲームで大人気の「10連ガチャ」も、この仕組みで作られています。

「もし大吉なら?」道を変えるのが条件分岐(if文)

ゲームを作っていると、「大吉が出たときだけファンファーレを鳴らしたい!」「凶が出たら『今日はのんびり過ごそう』と励ましたい」という場面がよくあります。

そんな「もし〜なら」を叶えてくれるのが、英語の if(イフ) です!

if (result === "大吉") {
  alert("🎉 大当たり!今日は最高の一日になるよ!");
} else if (result === "凶") {
  alert("☔ 気をつけて!でもラッキーアイテムはチョコレート!");
} else {
  alert("運勢は " + result + " でした!");
}

if (条件):「もしこの条件に当てはまるなら、ここを実行!」
else if (条件):「そうでなくて、もしこっちなら、ここを実行!」
else:「どれにも当てはまらない時は、ここを実行!」
=== は「左と右が完全に同じ!」という意味の合図です。

if文のイメージ
▲ if文のイメージ

一瞬で10回引く!魔法のループ(for文)

スマホゲームのガチャでよくある「10連ガチャ」。もしプログラムで10回引こうと思ったら、同じコードを10回もコピペして書かなきゃいけないのでしょうか?

いいえ、そんな面倒なことはしません!人間なら手が疲れる繰り返し作業も、パソコンなら1行の指示で 1秒間に何万回でも一瞬で繰り返してくれます。

この繰り返しを行うのが for(フォー)文 です。

for (let i = 0; i < 10; i++) {
  // ここに書いた処理が、きっちり10回繰り返される!
}

暗号みたい?分解すると超シンプル!

この for (let i = 0; i < 10; i++) は、カウンター係のロボット「iくん」への指示書です。

  1. let i = 0:iくんのカウンターを「0」にセット!
  2. i < 10:「カウンターが10未満なら、作業を続けてね!」
  3. i++:「1回作業が終わるたびに、カウンターを1増やしてね!」

これだけで、iくんが 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 と10回数えながら、同じ処理を猛スピードで実行してくれます。

for文のイメージ
▲ for文のイメージ

10連おみくじガチャを実際に動かしてみよう!

メモ帳を開いて、以下のコードを omikuji10.html として保存してブラウザで開いてみてください。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>10連おみくじガチャ</title>
</head>
<body>
  <h1>10連おみくじガチャ機</h1>
  <button onclick="draw10()">10連ガチャを引く!</button>
  <div id="display" style="margin-top:20px; font-size:18px; line-height:1.8;"></div>

  <script>
    let kuji = ["大吉 🌟", "中吉 ✨", "小吉 🍀", "吉 🌿", "凶 ⚡"];

    function draw10() {
      let resultText = ""; // 結果をためておく箱

      for (let i = 0; i < 10; i++) {
        let randomIndex = Math.floor(Math.random() * kuji.length);
        let picked = kuji[randomIndex];

        resultText += (i + 1) + "回目: " + picked + "<br>";
      }

      // 画面に10回分の結果を一気に表示!
      document.getElementById("display").innerHTML = resultText;
    }
  </script>
</body>
</html>

ボタンを押してみてください!一瞬で画面に「1回目:大吉」「2回目:小吉」……と10回分の結果がズラッと並んで表示されるはずです!

10連おみくじガチャのイメージ
▲ 10連おみくじガチャのイメージ

第4回のまとめ

  • 条件分岐(if:「もし〜なら」で結果ごとに違うメッセージを出す。
  • ループ(for:パソコンの得意技!何回もの繰り返しを一瞬で片付ける。
  • この2つを覚えたら、ゲーム作りの基礎はほぼマスター!

いよいよ次回は最終回!画面のデザインをオシャレに整えて、文字の入れ替えや演出をつけた『本格オリジナルおみくじガチャ』を完成させます!