2016-03-31 10 views
1

do/whileループを使って基本的な頭や尻尾のゲームを作ろうとしています。私の問題は、私のプロンプトが私の変数に何らかの影響を与えるようには見えないということです。私が入力したものは次のセクションに進み、ループしません。何か不足していますか?私は間違って何をしていますか?head/tailsゲームjavascript do/whileループ

var userChoice; 
var playAgain; 

do { 
    playAgain = prompt("Do you want to play Heads or tails?"); 
} 
while (playAgain === "Yes") { 
    userChoice = prompt("Choose Heads or Tails."); 
    if (userChoice === "Heads") { 
     coin = Math.random(); 
     if (coin <= 0.5) { 
      console.log("You Win!"); 
     } 
     else { 
      console.log ("You lose"); 
     } 
    } 
    if (userChoice === "Tails") { 
     coin = Math.random(); 
     if (coin > 0.5) { 
      console.log("You Win!"); 
     } 
     else { 
      console.log("You lose"); 
     } 
    } 
    playAgain = prompt("Would you like to play again?"); 
}; 
+0

'do-while'ループの構文を見直してください。または、デバッガで、 'prompt'文にブレークポイントを置き、コードをステップ実行して何が実行されているかを確認します。あるいは、あなたのコードの上に 'jshint'のようなプログラムを実行すると、' line 7、col 28、Missing semicolon.'が報告されます。これは問題の手がかりを与えるはずです。 –

答えて

2

あなたはこの代わりのように試してみてください:ループがdoの文の下に行動をしながら

var userChoice; 
 
var playAgain; 
 

 
playAgain = prompt("Do you want to play Heads or tails?"); 
 

 
while (playAgain === "Yes") { 
 
    userChoice = prompt("Choose Heads or Tails."); 
 
    if (userChoice === "Heads") { 
 
     coin = Math.random(); 
 
     if (coin <= 0.5) { 
 
      alert("You Win!"); 
 
     } 
 
     else { 
 
      alert ("You lose"); 
 
     } 
 
    } else if (userChoice === "Tails") { 
 
     coin = Math.random(); 
 
     if (coin > 0.5) { 
 
      alert("You Win!"); 
 
     } 
 
     else { 
 
      alert("You lose"); 
 
     } 
 
    } 
 
    playAgain = prompt("Would you like to play again?"); 
 
}

DO/while条件が満たされていない間。通常はdo/whileループを避ける傾向があります。本当に必要な場合を除き、これはかなりまれです。

また、私はコヒーレンスとコンソールを見ることを回避するためにconsole.logwindow.alertに置き換えました。

+1

* do/whileループはwhile文がdo文の下でアクションを実行しますが、while文はdo文の下でアクションを実行してからwhileを繰り返します'while'条件が満たされます。* –

1

do-whilewhileループの構文を混同しています。

do-whileループが

do { block } while (condition) 

whileループは、フォーム

do { block1 } while (condition) { block2 } 

JSパーサの非存在ハイブリッドを、書き込みしようとしてい

while (condition) { block } 

ですこれを次のように解釈します:

do { block1} while (condition); 
{ block2 } 

セミコロンは自動セミコロン挿入機構によって挿入されます。つまり、block1は、conditionが真である限り、何度も何度も実行し続けます。次に、それだけが実行され、block2に進みます。

この問題は、プロンプト文にブレークポイントを置き、コードを実行して何が行われているのかを確認することで、この問題を自分でデバッグすることができます。

それとも、あなたのコードの上にjshintのようなプログラムを実行し、それはあなたの問題についての手がかりを与えているだろう

line 7, col 28, Missing semicolon 

を報告します。

解決方法は正しい構文を使用してコードを書き直すことです。これはおそらく普通の古いwhileループです。