0

じゃんけんゲームを作ろうとしていますが、引き分けのときだけコードが機能するようです。おそらく途中で台無しにしてしまったのでしょう。また、プロンプト ウィンドウで入力した数字が文字列なのか数字なのかを尋ねたいのですが。少しでも助けていただければ幸いです。ありがとうございます。

// rock beats scissors (1 beats 3)
// paper beats rock (2 beats 1)
// scissors beat paper (3 beat 2)


 var player1= prompt("Player ONE, choose (1) for rock, (2) for paper, (3) for scissors");
 var player2 = prompt("Player TWO, choose (1) for rock, (2) for paper, (3) for scissors");

 function game (player1,player2)
 {

    if (player1===player2){
    alert("its a tie");
    }
    else
    { 
      if (player1+player2==="4")
      {
        if(player1==="1"){
        alert("Rock beats Scissors, Player one wins");
        }else {
        alert("Rock beats Scissors, Player Two wins");
        }

      }
      if (player1+player2==="3")
        {
         if (player1==="1"){
            alert("paper beats rock, player One wins");
         }else {
          alert ("paper beats rock, player Two wins");
          }
         }  
      if (player1+player2==="5")
        {
          if (player1==="3"){
            alert("scissors beats paper, Player One wins");
            }else{
            alert("scissors beats papaer, player Two wins");
            }

        }
    }
};
game(player1,player2);
4

4 に答える 4

2

数字を追加するのではなく、文字列を連結しているので、player1+player2==="3"実際には12or 21. 最初に文字列を数値に変換します。

このコードをタイ チェックの else ブロックの先頭に配置します。

player1 = parseInt(player1);
player2 = parseInt(player2);

拡張機能として、数値文字列以外が渡されるとこのメソッドが失敗するため、プレーヤーの入力をサニタイズして数字のみが含まれるようにする必要があります。

于 2012-11-21T09:01:48.180 に答える
1

player1..2 変数で整数演算ではなく、文字列連結を行っています。

文字列を int に解析するだけでなく、比較も変更する必要があることに注意してください。

試す:

 var player1= parseInt(prompt("Player ONE, choose (1) for rock, (2) for paper, (3) for scissors"));
 var player2 = parseInt(prompt("Player TWO, choose (1) for rock, (2) for paper, (3) for scissors"));

 function game (player1,player2)
 {

  if (player1===player2){
    alert("its a tie you mofos");
  }
  else
  { 
    if (player1+player2===4)
    {
      if(player1===1){
        alert("Rock beats Scissors, Player one wins");
      }else {
        alert("Rock beats Scissors, Player Two wins");
      }
    }
    if (player1+player2===3)
    {
      if (player1===1){
        alert("paper beats rock, player One wins");
      }else {
        alert("paper beats rock, player Two wins");
      }
    }  
    if (player1+player2===5)
    {
      if (player1===3){
        alert("scissors beats paper, Player One wins");
      }else{
        alert("scissors beats papaer, player Two wins");
      }
    }
  }
};
game(player1,player2);
于 2012-11-21T09:03:17.000 に答える
0

Ruirize が書いたことに加えて、別の間違いもあります。

player1+player2==="4"では、2 つの整数を追加して、それらを文字列と比較しようとしています。

演算子は、===値だけでなく型も比較します。整数と文字列を比較すると、false が返されます。

数値 4 が文字列 "4" に等しい演算子を使用するか==、数値 4 と比較します。

player1+player2 === 4
于 2012-11-21T09:03:22.260 に答える
0

これを試して!それが役に立てば幸い!

--javascript code for rock, paper, scissors...--

var userChoice = prompt("Please type in your choice : rock , paper or scissors?");
var computerChoice = Math.random();

if (computerChoice < 0.34)
{
    computerChoice = "rock";
}
else if(computerChoice <= 0.67)
{
    computerChoice = "paper";
}
else {
    computerChoice = "scissors";
}

var compare = function (userChoice, computerChioce)
{
    if (userChoice === computerChioce)
    {
        return "The result is a tie!";
    }
    else if (userChoice === "rock")
    {
        if(computerChioce === "scissors")
        {
            return "rock wins" + " ," + "rock breaks scissors";
        }
        else if (computerChioce === "paper")
        {
            return "paper wins" +  " ,"  + "paper captures rock";
        }
    }
    else if (userChoice === "paper")
    {
        if (computerChioce === "rock")
        {
            return "paper wins" +  ", "  + "paper captures rock";
        }
        else if (computerChioce === "scissors")
        {
            return "scissors win" + ", " + "scissors cuts paper";
        }
    }
    else if (userChoice === "scissors")
    {
        if (computerChioce === "rock")
        {
            return "rock wins" + " " + "rock breaks scissors";
        }
        else if (computerChioce === "paper")
        {
            return "scissors win" + ", " + "scissors cuts paper";
        }
    }
};

console.log("You chose" + " " + userChoice + ".");
console.log("Computer chose" + " " + computerChoice + ".");
compare (userChoice, computerChoice);
于 2013-08-22T09:32:26.827 に答える