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

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

ただいまの
回答率

90.38%

  • JavaScript

    21525questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • HTML

    12227questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • HTML5

    5445questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

javascriptゲームについて。

受付中

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 204

kkaaa

score 1

現在javascriptを勉強中です

東海道53次をテーマに次のようなすごろくゲームを作っています。

チャンスタイムはランダムのページに飛ばすことができるコマンドです。

(できれば一回しか使えないようにしたいのですが

、、)

また手持ちのサイコロの初期数は3個で、振るたびに一つずつ減り、0個になるとゲームオーバー、ミニゲームやクイズにクリアするとサイコロを一つ手に入れることができるプログラムを作っています。
(説明下手ですみません)

しかし実力不足で、完全にいきずまってしまいました。。。

本当に完成させたくて、質問させていただきました。。
あくまでプログラム部分は説明のためですので、必要でしたら中身を変えてくださっても構いません。。

html

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>東海道53次の旅</title>
<script src="info2.js"></script>
</head>
<body>
ここがスタート地点の品川か...
<br>ゴール地点の三条大橋??
<br>ふふ...知らねえが、そんなもん3秒でついてやらあ!!!(泣)
<br>
<br>
<input type="button" value="賽を投げまする" onclick="sai()">
<input type="button" value="賽の数を数える" onClick="howmanysai()">
<input type="button" value="稼ぎに出る" onClick="location.href='game1.html'">
<input type="button" value="chance time!" onclick="chance();this.disabled = true;">

<script type="text/javascript">
i=0;

</script>
</body>
</html>
______________________
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[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 howmanysai(){


alert("あなたの手持ちの賽の数は"+〇〇個+"です♩");
//ここもどのように変えればいいかわからなかったです。。

}
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>東海道53次の旅クイズ</title>

</head>
<body><form name="quiz">
<p>Q1 ?
<br><input type=radio name="a" checked>正解
<input type=radio name="a">不正解
<input type=radio name="a">不正解
<p>Q2 ?
<br><input type=radio name="b" checked>不正解
<input type=radio name="b">不正解
<input type=radio name="b">正解
<p>Q3 ?
<br><input type=radio name="c" checked>不正解
<input type=radio name="c">正解
<input type=radio name="c">不正解

<p><input type=button value=" 採点 " onClick="saiten()">
</form>

<script type="text/javascript">

function saiten(){
var point=0;
var max=30;


if(document.quiz.a[0].checked){point+=10;}
if(document.quiz.b[2].checked){point+=10;}
if(document.quiz.c[1].checked){point+=10;}


if(point==max){ここにサイコロを一つ増やすファンクションを入れたいです・・・
location.href="元のページ";

}
else{alert(""+point+"点です。\n残念。。。");
location.href="元のページ";
}
document.quiz.a[0].checked=true;
document.quiz.b[0].checked=true;
document.quiz.c[0].checked=true;
}
//-->
</script>
</body>
</html>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2019/01/12 16:29

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 1

+3

一つ目のJavaScriptは以下のようになると思います。

~省略~
function sai(){
//ここにサイコロを減らすファンクションを入れようとしたのですが、上手くいきませんでした。
alert(n+"が出たみたいですよ!!");
s -= 1;//追加行
~省略~
~省略~
function howmanysai(){

alert("あなたの手持ちの賽の数は"+ s +"個です♩"); //変更行
//"あなたの手持ちの賽の数は"+〇〇個+"です♩"だと〇〇個の部分がダブルクォーテーションでくくられていないため文字列として扱われずエラーになって今います。
//また、変数を文字列に埋め込みたい場合は単純に+でつなげてしまって問題ありません。
~省略~

2つ目のHTMLですが、こちらを見るにゲームとして根本的に抜けているものがあります。
別のページに遷移してしまうとJavaScriptの変数は消えて参照できなくなってしまいます。今の状態は稼ぎに出るボタンを押した瞬間、ゲームをセーブせず全く別のゲームを始めているようなものです。
賽を振る画面から次のgame1.htmlの画面に賽の数を持ち越したいのであれば、何らかの方法でブラウザにデータを記憶させておく必要があります。
サーバを用いない方法で有名なのはローカルストレージやクッキーを用いた方法だと思います。
ブラウザにデータを保存するlocalStorage(ローカルストレージ)の使い方
JavaScriptでcookieを保存する方法

ゲーム開始時に賽の数をなんらかの方法でセーブ、賽を振った時に1減らした値で上書き、game1.htmlではロードした際の数に1を足して再度上書きセーブ、初期画面に戻ったら賽の数をロードしなおす・・・というような流れで進めていけばいいんじゃないでしょうか。
試しに上記サイトを参考に実装し、わからなければ一緒に悩みましょう。


ある程度形ができているのは素晴らしいですが、この質問の仕方ではやってほしいことだけを丸投げしたととらえられても仕方ないと思います。
たとえば「ファンクションを入れようとしたのですが、上手くいきませんでした。」のような質問であれば、「sの値を2にするために次のようなコードを書いたが、賽の数が3のままだった」など、何を想定し、どういうことして、どううまくいかなかったのかを具体的に書くと参考になる回答をもらいやすいと思います。
完成目指して頑張ってください。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

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

  • JavaScript

    21525questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • HTML

    12227questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • HTML5

    5445questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。