本件は終了していますが、
少々リファクタリングしておきます。
JavaScript
1// サイコロを振る箇所は関数化して外出しできます
2var diceRoll = function () {
3 return parseInt(Math.floor(Math.random() * 6 + 1));
4}
5
6var sum = 0;
7// 条件はtrueにしておくと、コードを読んだ人が「無限ループがあるぞ!気をつけろ!」となるのでオススメ
8while (true) {
9 var dice = diceRoll();
10 sum += dice;
11 if (dice <= 1) {
12 // break構文を利用して確実に抜ける
13 break;
14 }
15}
16alert(sum);
連続してダイスロールするってあれですね、TCGの連続攻撃スキルっぽくて良いですよね。
触ってみたら楽しくなってきたので魔改造してみました。
JavaScript
1var diceRoll = function () {
2 return parseInt(Math.floor(Math.random() * 6 + 1));
3}
4// 継続条件の関数を受け付けるよう改修
5var getDices = function (success) {
6 var dices = [];
7 while (true) {
8 var dice = diceRoll();
9 dices.push(dice);
10 if (!success(dice)) {
11 break;
12 }
13 }
14 return dices;
15}
16// 関数.bindを利用して、次は()を使って実行するだけでダイスロールを繰り返した結果が得られる
17var continuousAttack = getDices.bind(null, function(dice){ return dice > 1 });
18
19var dices = continuousAttack();
20var sum = dices.reduce(function(a, b){ return a + b }, 0);
21console.log(sum, dices);
22// 何度か実行してみた
23// 41 [ 3, 4, 2, 5, 5, 4, 2, 4, 2, 2, 5, 2, 1 ]
24// 11 [ 6, 4, 1 ]
25// 34 [ 5, 5, 3, 4, 5, 2, 4, 2, 3, 1 ]
こんな感じで名前にすると分かりやすいのでオススメです。