ルーレットとマスの指示によっては、「あがり」にたどり着けない場合が生じ るかどうか判定するプログラムを作成したいです
以下の画像のようなすごろくを作成したとします
・「ふりだし」と「あがり」以外のマス目のイベント
・サイコロの目数
を自分で設定(入力)します。
以下の画像ののようなイベントマスを設定し、サイコロの目数を最大2に設定したとします。
その時、最初に1を出せばあがりに辿り着くことができますが、2を出してしまった場合、次にどのような数を出しても絶対にあがりには辿り着けないような設定になってしまっています。
以下のコードでは、ゴールできる設定の場合では「OK」と出力されるのですが、ゴールできない場合(「NG」)の判定ができません。
一体どのようにすればゴールできる時とできない時の判定ができるのでしょうか。ソートアルゴリズムなどを用いるのでしょうか?拙い説明ですがご教授いただけると幸いです。
![![イメージ説明
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script src="main.js"></script> </body> </html>
javascript
1let x = prompt("ルーレットが出す数の最大値 はいくつですか?") * 1; 2let n = prompt("「ふりだし」と「あがり」以外のマス はいくつですか?") * 1; 3let a = new Array(); 4let s = 0; 5let g = n + 1; //ゴールのマス 6let m = 0; //現在のマス 7let flag = false; 8 9//マスの指示内容を入力 10for (let i = 0; i < n; i++) { 11 a[s] = prompt(i + 1 + "番目のマスの指示内容を入力"); 12 console.log(i + 1 + "マス目の指示は" + a[s]); 13 s++; 14} 15//シミュレーション 16while (flag==false) { 17 let ram = Math.ceil(Math.random() * x); //サイコロを振る 18 19 m = m + ram; 20 m = m + a[m]; 21 22 if (g <= m) { 23 m = g; 24 flag = true; 25 } else if (m < 0) { 26 m = 0; 27 } 28 29} 30 31//判定 32if (flag) { 33 document.write("OK");//ゴールできる場合 34} else { 35 document.write("NG");//ゴールできない場合 36} 37
回答2件
あなたの回答
tips
プレビュー