質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.61%

すごろくゲームのサイコロを徐々に減らしたいです

受付中

回答 3

投稿

  • 評価
  • クリップ 2
  • VIEW 1,173

score 13

次のような東海道53次を旅するゲームを考えているのですが、ルールとして、最初にプレーヤーがもつサイコロの数を3つとして、一回サイコロを振るたびにサイコロを減らしていく、という事を行いたいのですがなかなかうまくいかず、苦戦しています。
最終的にはif(s=0)でゲームオーバーのページに飛ばしたいのですが,
どこを改善するべきでしょうか..
お願いいたします,,,

<html>
<head>
<meta charset="utf-8">
<title>東海道53次の旅</title>
<script src="info.js"></script>
</head>
<body>

<input type="button" value="賽を投げまする" onclick="sai();saih()">
<input type="button" value="賽の数を数える" onClick="howmanysai()">
<input type="button" value="賽のために稼ぎに出る"  onClick="location.href='game1.html'">
<script type="text/javascript">
i=0;
</script>
</body>
</html>

goURL[0] = "final3.html";
goURL[1] = "final4.html";
goURL[2] = "final5.html";
goURL[3] = "final6.html";
goURL[4] = "final7.html";
goURL[5] = "final8.html";
goURL[6] = "final9.html";
goURL[7] = "final10.html";
goURL[8] = "final11.html";
goURL[9] = "final12.html";
goURL[10] = "final13.html";
goURL[11] = "final14.html";
goURL[12] = "final15.html";
goURL[13] = "final16.html";
goURL[14] = "final17.html";
goURL[15] = "final18.html";
goURL[16] = "final19.html";
goURL[17] = "final20.html";
goURL[18] = "final21.html";
goURL[19] = "final22.html";
goURL[20] = "final23.html";
goURL[21] = "final24.html";
goURL[22] = "final25.html";
goURL[23] = "final26.html";
goURL[24] = "final27.html";
goURL[25] = "final28.html";
goURL[26] = "final29.html";
goURL[27] = "final30.html";
goURL[28] = "final31.html";
goURL[29] = "final32.html";
goURL[30] = "final33.html";
goURL[31] = "final34.html";
goURL[32] = "final35.html";
goURL[33] = "final36.html";
goURL[34] = "final37.html";
goURL[35] = "final38.html";
goURL[36] = "final39.html";
goURL[37] = "final40.html";
goURL[38] = "final41.html";
goURL[39] = "final42.html";
goURL[40] = "final43.html";
goURL[41] = "final44.html";
goURL[42] = "final45.html";
goURL[43] = "final46.html";
goURL[44] = "final47.html";
goURL[45] = "final48.html";
goURL[46] = "final49.html";
goURL[47] = "final50.html";
goURL[48] = "final51.html";
goURL[49] = "final52.html";
goURL[50] = "final53.html";
goURL[51] = "final54.html";
goURL[52] = "final55.html";
goURL[53] = "final56.html";


n = Math.floor(Math.random() * 5)+1;
s=3;
function sai(){

  alert(n+"が出たみたいですよ!!");

  if(i+n<54){
location.href = goURL[i+n];
}
else{
  alert("残念!勢い余って目的地を通り過ぎました。。。");
}
}
function saih(s){
s--;
  return s;
}

function howmanysai(){


  alert("あなたの手持ちの賽の数は"+saih(s)+"です♩");

}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+1

質問いただきありがとうございます!
URL引数とかはどうでしょうか
英語のサイトなので分かりやすいと思います
html-online.com
参考リンクだけですがとりあえず取り急ぎ。

追記
初期化部分をこのように

n = Math.floor(Math.random() * 5)+1;
s=parseInt(getUrlParam("s",3));
function getUrlParam(parameter, defaultvalue){
    var urlparameter = defaultvalue;
    if(window.location.href.indexOf(parameter) > -1){
        urlparameter = getUrlVars()[parameter];
        }
    return urlparameter;
}


location href部分をこのように
location.href = goURL[i+n]+"?s="+s;
すれば出来ると思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/05 21:20

    回答有難うございます
    試してみます

    キャンセル

  • 2019/01/05 22:12

    至らないことに私には少々難しいかったです。。
    もう少し詳しく教えていただけないでしょうか?

    キャンセル

  • 2019/01/06 08:43

    未熟者の私に回答本当に感謝しております泣
    試してみたのですが、ページが飛ばない問題に直面しております。。
    自己解決欄に載せてみたので、確認のほどお願いします。。

    キャンセル

  • 2019/01/06 08:48

    この場合、
    function howmanysaiの
    alert("あなたの手持ちの賽の数は"+〇〇+"です♩");

    この〇〇の部分はsにすべきなのかsaih(s)にすべきなのでしょうか?
    なん度もすみません

    キャンセル

+1

<!DOCTYPE html>
<html lang="ja">
<meta charset="UTF-8">
<title></title>
<style>
ol li { display: none; list-style: none; border:1px green solid; width: 400px; height: 400px;}
ol li:first-of-type { display: list-item; }
</style>


<body>
<ol id="hoge">
  <li>Start!! 日本橋
  <li>品川<li>川崎<li>神奈川<li>程(保土)ヶ谷<li>戸塚<li>藤沢<li>平塚<li>大磯<li>小田原<li>箱根<li>三島<li>沼津<li><li>吉原<li>蒲原(かんばら)<li>由比<li>興津(おきつ)<li>江尻<li>府中<li>鞠子(まりこ)<li>岡部<li>藤枝<li>島田<li>金谷<li>日坂(にっさか)<li>掛川<li>袋井<li>見付<li>浜松<li>舞坂<li>新居<li>白須賀<li>二川(ふたがわ)<li>吉田<li>御油(ごゆ)<li>赤坂<li>藤川<li>岡崎<li>池鯉鮒(ちりゅう)<li>鳴海<li><li>桑名<li>四日市<li>石薬師<li>庄野<li>亀山<li><li>坂下<li>土山<li>水口(みなくち)<li>石部<li>草津<li>大津
  <li>Goal!! 京都三条
</ol>
<p>
  <input type="button" value="賽を投げまする">
  <input type="button" value="賽の数を数える">
</p>
<script>
const
  COUNT = 3;

let current = 1, cnt = COUNT;

function move () {
  if (0 < cnt--) {
    let
      li = [...document.querySelectorAll ('#hoge li')],
      rnd = Math.floor (Math.random () * 6) + 1;

    alert ('賽の目は、' + rnd);
    li.forEach (e => e.style.display = 'none');
    current += rnd;
    if (current >= li.length)
      current = li.length -1;
    li[current].style.display = 'list-item';
  }
  else
    alert ('Game Over!!');
}

function disp () {
  alert ('残りの賽の数は、' + cnt);
}


function handler (e) {
  switch (e.target.value) {
  case '賽を投げまする' :
    move ();
    break;

  case '賽の数を数える' :
    disp ();
    break;
  }
}

document.addEventListener ('click', handler, false);
</script>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

goURL = new Array();
goURL[0] = "final3.html";
goURL[1] = "final4.html";
goURL[2] = "final5.html";
goURL[3] = "final6.html";
goURL[4] = "final7.html";
goURL[5] = "final8.html";
goURL[6] = "final9.html";
goURL[7] = "final10.html";
goURL[8] = "final11.html";
goURL[9] = "final12.html";
goURL[10] = "final13.html";
goURL[11] = "final14.html";
goURL[12] = "final15.html";
goURL[13] = "final16.html";
goURL[14] = "final17.html";
goURL[15] = "final18.html";
goURL[16] = "final19.html";
goURL[17] = "final20.html";
goURL[18] = "final21.html";
goURL[19] = "final22.html";
goURL[20] = "final23.html";
goURL[21] = "final24.html";
goURL[22] = "final25.html";
goURL[23] = "final26.html";
goURL[24] = "final27.html";
goURL[25] = "final28.html";
goURL[26] = "final29.html";
goURL[27] = "final30.html";
goURL[28] = "final31.html";
goURL[29] = "final32.html";
goURL[30] = "final33.html";
goURL[31] = "final34.html";
goURL[32] = "final35.html";
goURL[33] = "final36.html";
goURL[34] = "final37.html";
goURL[35] = "final38.html";
goURL[36] = "final39.html";
goURL[37] = "final40.html";
goURL[38] = "final41.html";
goURL[39] = "final42.html";
goURL[40] = "final43.html";
goURL[41] = "final44.html";
goURL[42] = "final45.html";
goURL[43] = "final46.html";
goURL[44] = "final47.html";
goURL[45] = "final48.html";
goURL[46] = "final49.html";
goURL[47] = "final50.html";
goURL[48] = "final51.html";
goURL[49] = "final52.html";
goURL[50] = "final53.html";
goURL[51] = "final54.html";
goURL[52] = "final55.html";
goURL[53] = "final56.html";


n = Math.floor(Math.random() * 5)+1;
s=parseInt(getUrlParam("s",3));
function getUrlParam(parameter, defaultvalue){
    var urlparameter = defaultvalue;
    if(window.location.href.indexOf(parameter) > -1){
        urlparameter = getUrlVars()[parameter];
        }
    return urlparameter;
}

function sai(){



  alert(n+"が出たみたいですよ!!");



  if(i+n<54){
 location.href = goURL[i+n]+"?s="+s;
}
else{

  alert("残念!勢い余って目的地を通り過ぎました。。。");

}

}

function saih(s){
s--;

  return s;
}

function howmanysai(){


  alert("あなたの手持ちの賽の数は"+saih(s)+"です♩");


}


function chance(){
x=Math.floor(Math.random() *  goURL.length);
  location.href = goURL[x];
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る