一系列Rock Paper Scissors游戏的总冠军

时间:2017-02-25 04:56:00

标签: java

我正在创建一个Rock Paper Scissor计划。最后,我想让它确定所有比赛的胜利者。它总是打印出来" Player1击败Player2和我"无论谁得分最高。我的错误在哪里,我该如何纠正?

import java.util.Scanner;
import java.util.Random;

public class RPS2Player{
   public static void main(String[]args){
      int onePlay, computerPlay, twoPlay, game = 0, win1 = 0, win2 = 0, compWin = 0, lose1 = 0, lose2 = 0, compLose = 0, playChoice;

      //instantiate objects Scanner and Random
      Scanner UI = new Scanner(System.in);
      Random num = new Random();

      //Get user input: Rock = 0, Paper = 1, Scissors = 2
      System.out.println("Hello! would you like to play Rock, Paper, Scissors? 0=yes, 1=no");
      playChoice = UI.nextInt(2);
      while (playChoice == 0){
         game++;
         System.out.println("Round " + game);
         System.out.println("Player1, choose 0=Rock, 1=Paper, 2=Scissors");
            onePlay = UI.nextInt(3);
         System.out.println();
         System.out.println();
         System.out.println();
         System.out.println();
         System.out.println();
         System.out.println();
         System.out.println("Player2, choose =Rock, 1=Paper, 2=Scissors");
            twoPlay = UI.nextInt(3);

         //get computer generated input: 0, 1, 2
         computerPlay = num.nextInt(3);//defines a random choice of 0, 1, or 2

         switch(onePlay){
            case 0: System.out.println("Player1 chose Rock"); break;
            case 1: System.out.println("Player1 chose Paper"); break;
            case 2: System.out.println("Player1 chose Scissors"); break;
         }//end switch statement for onePlay

         switch (twoPlay){
            case 0: System.out.println("Player2 chose Rock"); break;
            case 1: System.out.println("Player2 chose Paper"); break;
            case 2: System.out.println("Player2 chose Scissors"); break;
         }//end switch statement for twoPlay

         switch(computerPlay){
            case 0: System.out.println("I chose Rock"); break;
            case 1: System.out.println("I chose Paper"); break;
            case 2: System.out.println("I chose Scissors"); break;
         }//end switch statement for computerPlay

         //comparisons Player1 vs computer
         if (onePlay == 0){//Rock
            if (computerPlay == 0){
               System.out.println("Player 1 and I tie!"); 
               //computer chose rock - tie game
            }
            if (computerPlay == 1){ 
               System.out.println("I beat Player1!");
               lose1++;
               compWin++;//computer chose paper - computer wins
            }
            if (computerPlay == 2){
               System.out.println("Player1 beat me!"); 
               compLose++;
               win1++;//computer chose scissors - player wins
            }
         }//end if statements for onePlay = 0 (Rock)

         if (onePlay == 1){//Paper
            if (computerPlay == 0){
               System.out.println("Player1 beat me!"); 
               compLose++;
               win1++;//computer chose rock - player win1s
            }
            if (computerPlay == 1){
               System.out.println("Player1 and I tie!"); 
               // computer chose paper - tie game
            }
            if (computerPlay ==2){
               System.out.println("I beat Player 1!"); 
               lose1++;
               compWin++;//computer chose scissor - computer win1s
            }
         }//end if statements for onePlay = 1 (Paper)

         if (onePlay == 2){//Scissors
            if (computerPlay == 0){
               System.out.println("I beat Player1!"); 
               lose1++;
               compWin++;//computer chose rock - computer wins
            }
            if (computerPlay == 1){
               System.out.println("Player1 beat me!");
               compLose++;
               win1++;//computer chose paper - play wins
            }
            if (computerPlay == 2){
               System.out.println("Player1 and I tie!"); 
               //computer chose scissors - tie game
            }
         }//end if statements for onePlay = 2 (Scissors)
         //end comparisons Player1 vs computer

         //comparisons Player2 vs computer
         if (twoPlay == 0){//Rock
            if (computerPlay == 0){
               System.out.println("Player2 and I tie!"); 
               //computer chose rock - tie game
            }
            if (computerPlay == 1){ 
               System.out.println("I beat Player2!"); 
               lose2++;
               compWin++;//computer chose paper - computer wins
            }
            if (computerPlay == 2){
               System.out.println("Player2 beat me!"); 
               compLose++;
               win2++;//computer chose scissors - player2 wins
            }
         }//end if statements for twoPlay = 0 (Rock)

         if (twoPlay == 1){//Paper
            if (computerPlay == 0){
               System.out.println("Player2 beat me!"); 
               compLose++;
               win2++;//computer chose rock - player wins
            }
            if (computerPlay == 1){
               System.out.println("Player2 and I tie!"); 
               // computer chose paper - tie game
            }
            if (computerPlay ==2){
               System.out.println("I beat Player2!"); 
               lose2++;
               compWin++;//computer chose scissor - computer wins
            }
         }//end if statements for twoPlay = 1 (Paper)

         if (twoPlay == 2){//Scissors
            if (computerPlay == 0){
               System.out.println("I beat Player2!"); 
               lose2++;
               compWin++;//computer chose rock - computer wins
            }
            if (computerPlay == 1){
               System.out.println("Player2 beat me!");
               compLose++;
               win2++;//computer chose paper - player2 wins
            }
            if (computerPlay == 2){
               System.out.println("Player2 and I tie!"); 
               //computer chose scissors - tie game
            }
         }//end if statements for twoPlay = 2 (Scissors)
         //end comparisons Player2 vs computer

         //comparison Player1 vs Player2
         if (onePlay == 0){//Rock
            if (twoPlay == 0){
               System.out.println("Player1 and Player2 tie!"); 
               //Player2 chose rock - tie game
            }
            if (twoPlay == 1){ 
               System.out.println("Player2 beat Player1!"); 
               lose1++;
               win2++;//Player2 chose paper - Player2 wins
            }
            if (twoPlay == 2){
               System.out.println("Player1 beat Player2!"); 
               lose2++;
               win1++;//Player2 chose scissors - player1 wins
            }
         }//end if statements for personPlay = 0 (Rock)

         if (onePlay == 1){//Paper
            if (twoPlay == 0){
               System.out.println("Player1 beat Player2!"); 
               lose2++;
               win1++;//computer chose rock - player wins
            }
            if (twoPlay == 1){
               System.out.println("Player1 and Player2 tie!"); 
               // computer chose paper - tie game
            }
            if (twoPlay ==2){
               System.out.println("Player2 beat Player1!"); 
               lose1++;
               win2++;//player2 chose scissor - player2 wins
            }
         }//end if statements for personPlay = 1 (Paper)

         if (onePlay == 2){//Scissors
            if (twoPlay == 0){
               System.out.println("Player2 beat Player1!"); 
               lose1++;
               win2++;//Player2 chose rock - player2 wins
            }
            if (twoPlay == 1){
               System.out.println("Player1 beat Player2!");
               lose2++;
               win1++;//player2 chose paper - player1 wins
            }
            if (twoPlay == 2){
               System.out.println("Player1 and Player2 tie!"); 
               //player2 chose scissors - tie game
            }
         }//end if statements for personPlay = 2 (Scissors)
         //end //comparisons Player1 vs Player2
         System.out.println("Would you like to play again? 0=yes, 1=no");
         playChoice = UI.nextInt(2);
      }//end while loop for play

      //user decides not to play or decides to stop playing - Stats are given
      if (playChoice == 1){
         System.out.println("Ok let's play (again) sometime.");//game ended
         System.out.println();
         System.out.println("We played " + game + " games.");//number of games played
         System.out.println("Player1 won " + win1 + " games, lost " + compWin + " games.");//Player1 wins and losses
         System.out.println("Player2 won " + win2 + " games, lost " + lose2 + " games.");//Player2 wins and losses
         System.out.println("I won " + compWin + " games and lost " + compLose + " games.");//computers wins and losses
         System.out.print("In terms of wins, ");

      //determine best player
      System.out.println("Across all games played, ");
      if (win1 > (win2 & compWin)){
         System.out.println("Player1 beat Player2 and I!");
      }   
      else if (win2 > (win1 & compWin)){
         System.out.println("Player2 beat Player1 and I!");
      }   
      else 
         System.out.println("I beat Player1 and Player2!");

      }//end while loop
   }//end method
}//end program

3 个答案:

答案 0 :(得分:1)

if (win1 > (win2 & compWin))

这应该是

if (win1 > win2 && win1 > compWin)

同样适用于else if

逻辑AND运算符为&&&是一个按位AND,这是一个完全不同的操作。这是一项有点先进的功能,你还没有使用过。

你所写的是将英语直接翻译成代码并不起作用的常见错误。 &&||与"和#34;的工作方式完全相同和"或"用英语做。

(顺便说一句,语法应该说" Player1击败Player2和我。")

答案 1 :(得分:1)

你的条件应该是

if ((win1 > win2) && (win1 > compWin)){
     System.out.println("Player1 beat Player2 and I!");
  }   
  else if ((win2 > win1) && (win2 > compWin)){
     System.out.println("Player2 beat Player1 and I!");
  }   
  else 
     System.out.println("I beat Player1 and Player2!");

  }

因为java中的AND语句是"&&"不是"&", 你的条件检查也是错误的

答案 2 :(得分:0)

您在比较中使用了按位运算符。我不认为这就是你的意图。

if (win1 > (win2 & compWin)){
   // if win2 = 14 and compWin = 9
   //     9 (base 10) = 00000000000000000000000000001001 (base 2)
   //    14 (base 10) = 00000000000000000000000000001110 (base 2)
   //            --------------------------------
   //14 & 9 (base 10) = 00000000000000000000000000001000 (base 2) = 8 (base 10)
   // if win2 = 14 and compWin = 0; 14 & 0 = 0
   System.out.println("Player1 beat Player2 and I!");
}

我认为你的意思是将win1与win2进行比较,并使用逻辑&&和操作

// Should be:
if(win1 > win2 && win1 > compWin) {
   System.out.println("Player1 beat Player2 and I!");
}
else if (win2 > win1 && win2 > compWin)){
   System.out.println("Player2 beat Player1 and I!");
}   
else 
   System.out.println("I beat Player1 and Player2!");
}

使用&&的逻辑表达式或||在一边评估,然后另一边评估。如果左侧是真的,&&右边是真的,回归真实;否则返回false。