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

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

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

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

JavaScript

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

Q&A

解決済

3回答

2119閲覧

if else if else条件分岐ゲーム elseがおかしい?

masaakitsuyoshi

総合スコア102

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

JavaScript

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

0グッド

0クリップ

投稿2016/02/26 03:51

編集2016/02/26 03:54

codecademyというサイトで学習しています。

Javascriptで条件分岐ゲームを作っているのですが、
選択肢の中でどうしても表示されない部分があります。

ゲームの内容は、森で迷ったヘンゼルとグレーテルが道を選んで進んでいき
選ぶ選択肢によって、結果が変わる、というものです。
選択肢はpromptで入力されたものになります

そのゲームの中で、下記、3つの項目が正しく出力されません。

(例 選択肢ー選択肢ー選択肢ー選択肢ー)の形で書いています。

1右ー戦うー叩く

なぜか (グレーテルを犠牲にして逃げる)の選択肢の方が出力されます。
出力 "魔女(ヒッヒッヒ賢い子だねえ)そう言うと、魔女はヘンゼルを捕まえ、魔界へと連れ去った。第二章ヘンゼル悪魔になる。次週お楽しみに!"

2 左ー笑うー逃げるーいいえ

なぜか (逃げるーはい)の選択肢の方が出力されます。
出力 ”男は優しく帰り道を教えてくれた。二人は無事に家に帰った! the end"

3 左ーシカトー迎えるーいいえ

こちらもなぜか(逃げるーはい)の選択肢の方が出力されます。
出力 ”男は優しく帰り道を教えてくれた。二人は無事に家に帰った! the end"

var user =prompt("あなたはヘンゼル。グレーテルと一緒に森で道に迷っている。前には3つの道が。どれに進む?右 左 中央 ").toUpperCase(); switch(user) { case'右': var okashi = prompt("お菓子の部屋を発見!でもそばに魔女がいるよ。どうする?(戦う 逃げる)").toUpperCase(); if(okashi =="戦う") { var tatakau = prompt("どうやって戦う?(石を投げる グレーテルを犠牲にして逃げる 叩く)") if(tatakau === "石を投げる") { console.log("見事魔女の目にクリーンヒット!二人はお菓子の家で幸せに暮らしましたとさ。。。"); } else if(tatakau="グレーテルを犠牲にして逃げる") { console.log("魔女(ヒッヒッヒ賢い子だねえ)そう言うと、魔女はヘンゼルを捕まえ、魔界へと連れ去った。第二章ヘンゼル悪魔になる。次週お楽しみに!") } else{ console.log("そんな攻撃は魔女には効かない!アームロックをかけられヘンゼルは腕を折られた。その隙にグレーテルは逃げ出し、一人っ子としてソだれられましたとさ。the end") } } else{ console.log("魔女が追いかけてきたよ!捕まって鍋で煮こまれて死にました! the end") } break; case'左': var otoko = prompt("不審な男を見つけた。男はじっとニコッと笑いかけて来た(微笑み返す シカト)").toUpperCase(); var warai = prompt("男はこちらへ近づいてきた どうする?(迎える 逃げる)").toUpperCase(); if(otoko === "微笑み返す" && warai ==="迎える") { console.log("男は優しく帰り道を教えてくれた。二人は無事に家に帰った!the end"); } else if(otoko === "微笑み返す" || warai === "迎える") {var ask = prompt("アメちゃんあげるからついといで?(はい いいえ)") if(ask="はい") { console.log("男は優しく帰り道を教えてくれた。二人は無事に家に帰った! the end");} else{ console.log("男は逆上して二人をビンタして去っていった。。。the end") } } else { console.log("男は逆上して二人に襲いかかってきた!二人は切り刻まれて道に捨てられた。。。the end"); }; break; case'中央': var kuma = prompt("クマが現れた!どうする?(戦う 逃げる)") if(kuma === "戦う"){ console.log("ヘンゼルの威嚇にクマはビビリ、立ち去った。。。ただし帰り道が分からず二人は森で餓死して死にましたとさ。。。END") }else{console.log("クマが追いかけてきてふたりとも食われましたとさ。") } console.log ("") break; default: "急にお腹が痛くなって家へ帰りました。。 THE END" }

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

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

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

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

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

guest

回答3

0

1右ー戦うー叩く

なぜか (グレーテルを犠牲にして逃げる)の選択肢の方が出力されます。

出力 "魔女(ヒッヒッヒ賢い子だねえ)そう言うと、魔女はヘンゼルを捕まえ、魔界へと連れ去った。第二章ヘンゼル悪魔になる。次週お楽しみに!"

user = 右
okashi = 戦う
tatakau = 叩く

14行目の else if の式が、比較演算子でなく、代入になっています。

else if(tatakau="グレーテルを犠牲にして逃げる")

else if(tatakau == "グレーテルを犠牲にして逃げる")

としてみてください。

2 左ー笑うー逃げるーいいえ

なぜか (逃げるーはい)の選択肢の方が出力されます。

出力 ”男は優しく帰り道を教えてくれた。二人は無事に家に帰った! the end"

笑う = 微笑み返すですかね?

user = 左
otoko = 微笑み返す
warai = 逃げる
ask = いいえ

47行目の if の式が、比較演算子でなく、代入になっています。

if(ask="はい")

if(ask == "はい")

にしてみてください。

3 左ーシカトー迎えるーいいえ

こちらもなぜか(逃げるーはい)の選択肢の方が出力されます。

出力 ”男は優しく帰り道を教えてくれた。二人は無事に家に帰った! the end"

2と同じ理由ですね。

投稿2016/02/26 04:16

youji

総合スコア257

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

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

0

else if(tatakau="グレーテルを犠牲にして逃げる")
if(ask="はい")

どちらも=が1個なので2個か3個に変更してはどうでしょうか

投稿2016/02/26 04:06

garribu

総合スコア12

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

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

masaakitsuyoshi

2016/02/26 04:09

無事直りました! =と==と===の違いを理解していなかったようです。。。 ご回答ありがとうございました!
guest

0

ベストアンサー

ifの条件式で、= 一つになっているところがあります。これは代入です。

投稿2016/02/26 03:57

shi_ue

総合スコア4437

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

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

masaakitsuyoshi

2016/02/26 04:08

治りました! = == === の違いを理解していなかったので改めて復習します。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問