03-07 繰り返し (while文2)

2025年12月17日

名前

茅野壮甫

自分で作った図形(コードと画像)

✅ 練習問題 3-7-1

function setup() {
  let n = 0;

  while (true) {
    n++;
    let dice = int(random() * 6) + 1;
    print(n + "回目:" + dice + "が出た");

    if (dice === 6) {
      print("6が出たので終了します!");
      break;  // ループを抜ける
    }
  }

  print("サイコロを振った回数:" + n + "回");
}

📷 実行結果

✅ 練習問題 3-7-2

function setup() {
  let tickets = 7;  // 所持チケット枚数
  let n = 0;    // 引いた回数

  while (true) {
    n++;

    r = random();
    if (r < 0.03) {
      print(n + "回目: ★★★★★");
      print("合計"+n+"回引きました")
      break
    } else if (r < 0.03 + 0.07) {
      print(n + "回目: ★★★★");
    } else if (r < 0.03 + 0.07 + 0.15) {
      print(n + "回目: ★★★");
    } else if (r < 0.03 + 0.07 + 0.15 + 0.30) {
      print(n + "回目: ★★");
    } else {
      print(n + "回目: ★");
    }

    tickets--;
    if(tickets===0){
      print("チケットがなくなったのでガチャを終了します。");
      break
    }
  }
}

📷 実行結果

✅ 練習問題 3-7-3

function setup() {
  let tickets = 30;    // 手持ちチケット
  let n = 0;       // 累計回数
  let lose = 0;        // 直近の★3以下の回数

  while (tickets > 0) {
    tickets--;
    n++;

    // 確定保証
    if (lose == 9) {
      print(n + "回目: ★4(★★★★)確定!");
      lose = 0;
      continue;        // 通常抽選を飛ばして次のループへ
    }

    // 通常抽選
    let r = random();
    if (r < 0.03) {
      print(n + "回目: ★5(★★★★★)");
      lose = 0;
    } else if (r < 0.03 + 0.07) {
      print(n + "回目: ★4(★★★★)");
      lose = 0;
    } else if (r < 0.03 + 0.07 + 0.30) {
      print(n + "回目: ★3(★★★)");
      lose++;
    } else {
      print(n + "回目: ★2(★★)");
      lose++;
    }
  }

  print("合計" + n + "回引きました");
}

📷 実行結果

✅ 練習問題 3-7-4

このガチャでは★5まで排出対象になっているのに最低保証は★4以上確定ではなく★4確定になっているから。

まとめ・感想

while文でbreakやcontinueを使えば条件を無視してループを止めることやスキップをすることができる。

コメントする