pumpin26
pumpin26

Reputation: 59

Please, how do I get the code to terminate after two computer or user wins

Please, how do I get my code to terminate after two wins by either the computer or the user? I am asked to write a program that plays the popular scissor-rock-paper game. (A scissor can cut a paper, a rock can knock a scissor, and a paper can wrap a rock.) The program randomly generates a number 0, 1, or 2 representing scissor, rock, and paper. The program prompts the user to enter a number 0, 1, or 2 and displays a message indicating whether the user or the computer wins, loses, or draws. The user is expected to continuously play until either the user or the computer wins more than two times. Unfortunately, the code game doesn't end after more than two wins.

Thank you.

 package scissors;
 import java.util.Scanner;
 public class Scissors {
 public static void main(String[] args) {
    //generate random number
      int count=0;
      int computerWin=0;
      int youWin=  0;      
    while (computerWin <2 || youWin<2){
    int computer = (int)(Math.random()*3);
 // prompt user for  input 
    Scanner s = new Scanner(System.in);
    System.out.println("Enter a number; scissor(0),rock(1), paper(2): ");
    int you = s.nextInt();

   switch(computer){  
       case 0: 
           if(you==0){
           System.out.println("The computer is scissor and you are scissor. It's  a Draw"); 
           }
           else if (you==1){
           System.out.println("The computer is scissor  and you are rock. You won");
           youWin++;
           }
           else if (you==2){
           System.out.println("The computer is scissor and  you are paper. You  lost");
           computerWin++;
        }
           break;
       case 1:
           if(you==0){
           System.out.println("The computer is rock and   you  are scissor. You  lost");
           computerWin++;
           }   
           else if (you==1){
           System.out.println("The computer is rock and  you  are rock. It's  a Draw");
           }
           else if(you==2){
           System.out.println("The computer is rock  and  you  are paper. You won");
           youWin++;
           }
           break;
       case 2:
           if (you==0){
           System.out.println("The computer is paper and  you  are scissor. You  won");
           youWin++;
           }
           else  if (you==1){
           System.out.println("The computer is  papare and  you  are  rock. You lost");
           computerWin++;
           }
           else if (you==2){
           System.out.println("The computer is  paper and  you are  paper. It's a draw");
           }
           break;
   }       
    if (computerWin>youWin)
        System.out.println("Computer wins");
    else
        System.out.println("You  win");
}    

   }
  }

Upvotes: 0

Views: 459

Answers (3)

Maxim Welikobratov
Maxim Welikobratov

Reputation: 285

Just change to while (computerWin <2 && youWin<2){.

Your code should iterate while computer and you have less then 2 wins (not or). When any of players have 2 or more wins iteration should be broken.

Upvotes: 0

Gregory Basior
Gregory Basior

Reputation: 290

The bug in your code is the while statement:

 while (count<=2 || count<=-2)

In this case it runs anytime that count <= 2 because the second condition says count <= -2 instead of >= -2, but it looks like you want it to run only if count is between 2 and negative 2. Also, you probably don't want it to be inclusive (<=) since you want it to break when one person wins 2 more than the other person. So, you want your loop to definition to look like:

while (count<2 || count>-2)

Upvotes: 0

Vince
Vince

Reputation: 15146

Right now, the player and computer share a counter. If the player wins, the counter goes up. If the computer wins, it goes down. This does not track how many wins each one has.

You need a variable to count how many wins a player has for both the user and the computer.

int userPoints = 0, compPoints = 0;

while(userPoints < 2 || compPoints < 2) {
     //..
}

if(compPoints > userPoints) {
    //computer won
} else {
      //user won
}

When the computer wins, add one to compPoints. When the user wins, add one to userPoints

Upvotes: 1

Related Questions