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

練習問題3-7-2

チケットがある限りガチャを引き続けるプログラム(例題3-6-4)を改造して、★5が出た場合breakで撤退するプログラムを作りなさい。

function setup() {
  let tickets = Math.floor(random(1 ,101));  // 所持チケット枚数
  let n = 0;    // 引いた回数
  
  while (tickets > 0) {
    n++;

    r = random();
    if (r < 0.03) {
      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("チケットがなくなったのでガチャを終了します。");
  }else{
    print("星五が出たので終了しました。")
  }
  print("合計"+n+"回引きました。")
}
今回は、前回面倒くさくて、やらなかったチケットをランダムで1~100枚にするプログラムを付け加えてみました。
それと工夫なのかは分かりませんが、一応星五が出たか、チケットがなくなったかを判別できるようにしています。

練習問題3-7-4

先の例題だと、ユーザーから不満が出ると思われます。なぜでしょう?先生に説明しなさい。

今回も教室には居ないのでここに書きます。
プログラムを見て私が思ったのは、10回ずつ回すのではなく、持っているチケットをすべて使ってしまうところです。
それ以外には思いつきませんでした。違和感を感じたところで言えば、★1がいないことですが、それは最近のゲームではよくあることですし、プログラム的にも必要がなかったと考えます。

コメントする