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

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

新規登録して質問してみよう
ただいま回答率
85.50%
HTML5

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

JavaScript

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

HTML

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

Q&A

1回答

1121閲覧

javascriptゲームについて。

kkaaa

総合スコア13

HTML5

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

JavaScript

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

HTML

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

2グッド

1クリップ

投稿2019/01/12 04:09

現在javascriptを勉強中です

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

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

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

、、)

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

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

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

html

HTML

1<!DOCTYPE HTML> 2<html> 3<head> 4<meta charset="utf-8"> 5<title>東海道53次の旅</title> 6<script src="info2.js"></script> 7</head> 8<body> 9ここがスタート地点の品川か... 10<br>ゴール地点の三条大橋?? 11<br>ふふ...知らねえが、そんなもん3秒でついてやらあ!!!(泣) 12<br> 13<br> 14<input type="button" value="賽を投げまする" onclick="sai()"> 15<input type="button" value="賽の数を数える" onClick="howmanysai()"> 16<input type="button" value="稼ぎに出る" onClick="location.href='game1.html'"> 17<input type="button" value="chance time!" onclick="chance();this.disabled = true;"> 18 19<script type="text/javascript"> 20i=0; 21 22</script> 23</body> 24</html> 25______________________

javascript

1goURL = new Array(); 2 3goURL[0] = "final3.html"; 4goURL[1] = "final4.html"; 5goURL[2] = "final5.html"; 6goURL[3] = "final6.html"; 7goURL[4] = "final7.html"; 8goURL[5] = "final8.html"; 9goURL[6] = "final9.html"; 10goURL[7] = "final10.html"; 11goURL[8] = "final11.html"; 12:::::::: 13goURL[51] = "final54.html"; 14goURL[52] = "final55.html"; 15goURL[53] = "final56.html"; 16 17 18n = Math.floor(Math.random() * 5)+1; 19s=3; //サイコロの初期の数 20function sai(){ 21//ここにサイコロを減らすファンクションを入れようとしたのですが、上手くいきませんでした。 22 23alert(n+"が出たみたいですよ!!"); 24 25 26if(i+n<54){ 27location.href = goURL[i+n]; 28} 29else{ 30alert("残念!勢い余って目的地を通り過ぎました。。。"); 31} 32} 33 34 35function howmanysai(){ 36 37 38alert("あなたの手持ちの賽の数は"+〇〇個+"です♩"); 39//ここもどのように変えればいいかわからなかったです。。 40 41} 42

html

1<!DOCTYPE HTML> 2<html> 3<head> 4<meta charset="utf-8"> 5<title>東海道53次の旅クイズ</title> 6 7</head> 8<body><form name="quiz"> 9<p>Q1 ? 10<br><input type=radio name="a" checked>正解 11<input type=radio name="a">不正解 12<input type=radio name="a">不正解 13<p>Q2 ? 14<br><input type=radio name="b" checked>不正解 15<input type=radio name="b">不正解 16<input type=radio name="b">正解 17<p>Q3 ? 18<br><input type=radio name="c" checked>不正解 19<input type=radio name="c">正解 20<input type=radio name="c">不正解 21 22<p><input type=button value=" 採点 " onClick="saiten()"> 23</form> 24 25<script type="text/javascript"> 26 27function saiten(){ 28var point=0; 29var max=30; 30 31 32if(document.quiz.a[0].checked){point+=10;} 33if(document.quiz.b[2].checked){point+=10;} 34if(document.quiz.c[1].checked){point+=10;} 35 36 37if(point==max){ここにサイコロを一つ増やすファンクションを入れたいです・・・ 38location.href="元のページ"; 39 40} 41else{alert(""+point+"点です。\n残念。。。"); 42location.href="元のページ"; 43} 44document.quiz.a[0].checked=true; 45document.quiz.b[0].checked=true; 46document.quiz.c[0].checked=true; 47} 48//--> 49</script> 50</body> 51</html> 52 53
bochan2👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

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

JavaScript

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

JavaScript

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

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

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


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

投稿2019/01/12 04:48

編集2019/01/12 04:50
koronatail

総合スコア433

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問