2017-06-23 6 views
1

私はロックペーパーハサミゲームを作ったが、window.alertは機能していないので、ユーザーは勝ったかどうかを見ることができない!どうすればこの問題を解決できますか?ここ は私のJSです:他にロックペーパーハサミwindow.alert not working

var userChoice = prompt("Do you choose rock, paper or scissors?"); 
var computerChoice = Math.random(); 
if (computerChoice < 0.34) { 
    computerChoice = "rock"; 
} else if(computerChoice <= 0.67) { 
    computerChoice = "paper"; 
} else { 
    computerChoice = "scissors"; 
} console.log("Computer: " + computerChoice); 

var compare = function(choice1, choice2) { 
if(choice1 === choice2) { 
    return "The result is a tie!"; 
     window.alert("Wait what. We tied?"); 
    } 

    else if(choice1 === "rock") { 

     if(choice2 === "scissors") { 
      return "rock wins"; 
       window.alert("What? Why u crush my scissors :<. I guess you won!"); 
     } 
     else { 
      return "paper wins"; 
      window.alert("Got a present for you! Just kidding lol its a rock packed in paper. Imma throw it at you and you will die."); 
     } 
    } 
    if(choice1 === "paper") 
     if(choice2 ==="rock"){ 
      return "paper wins"; 
      window.alert("Your paper, Vs my Rock! Hah! I won!"); 
     } 
    if(choice1 === "scissors"){ 
     if(choice2 ==="rock"){ 
      return "rock wins"; 
       window.alert("I just crushed your scissors fam. I won. ezpz take the L"); 
     } 
    else{ 
     return "scissors wins"; 
      window.alert("You spooked m8? My scissors cut you in 326 pieces! >:D"); 
     } 
    } 
}; 
compare(userChoice,computerChoice); 

すべてが正常に動作しますが、それは単にコンソールに出力します。 ヘルプは高く評価されています

答えて

4

window.alert()呼び出しはプログラムによって到達できません。プログラムがreturnステートメントを検出すると、関数の呼び出し元に戻ります。 window.alert()を各return文の上に移動する必要があります。アラートを表示するには、return文が呼び出されるようにしてください。

また、「ウィンドウ」を使用します。各アラート文ではオプションです。

+0

おかげで、それが働きました。しかし、私は窓なしでそれをどのように使うのだろうか?変数を宣言する必要はありますか?または私はちょうど警戒を置くことができる? (または.alert) – GlitchyShadowZ

+0

変数を宣言する必要はありません。 windowはグローバルオブジェクトなので、alert()を省略形で呼び出すことができます。こちらの回答を参照してください:https://stackoverflow.com/questions/13459907/what-is-the-difference-between-alert-and-window-alert – hRdCoder

1

1つを除いて、返品は警告の前に来ます。復帰は、関数のあなたを壊し、残りの行は実行されません、あなたはいくつかの

else 

といくつかの中括弧

を逃すと固定してくださいされているそれらをすべての周り

0

を切り替えてみてくださいあなたのインデント。

0

アラートには、それらが呼び出される前にreturn文があるため、その関数を終了するために到達できません。そしてあなたは中括弧が欠けていて、もう一つ追加する必要がありました。コードを正しくインデントしたら、これは簡単に見つけられました。

試してみてください。

var computerChoice = Math.random(); 

if (computerChoice < 0.34) { 
    computerChoice = "rock"; 
} else if(computerChoice <= 0.67) { 
    computerChoice = "paper"; 
} else { 
    computerChoice = "scissors"; 
} console.log("Computer: " + computerChoice); 

var compare = function(choice1, choice2) { 
    if(choice1 === choice2) { 
    return "The result is a tie!"; 
    window.alert("Wait what. We tied?"); 
    } else { 
    if(choice1 === "rock") { 
     if(choice2 === "scissors") { 
     alert("What? Why u crush my scissors :<. I guess you won!"); 
     return "rock wins"; 
     } else { 
     alert("Got a present for you! Just kidding lol its a rock packed in paper. Imma throw it at you and you will die."); 
     return "paper wins"; 

     } 
    } 

    if(choice1 === "paper") { 
     if(choice2 ==="rock") { 
     alert("Your paper, Vs my Rock! Hah! I won!"); 
     return "paper wins"; 
     } 
    } 

    if (choice1 === "scissors") { 
     if(choice2 ==="rock"){ 
     alert("I just crushed your scissors fam. I won. ezpz take the L"); 
     return "rock wins"; 
     } else { 
     return "scissors wins"; 
     } 
    } 
}; 
compare(userChoice,computerChoice); 
+0

また、これはwindow.alertなしで動作しており、アラートが必要です。変数は必要ありません。 –