Home > database >  How can I start the program over again
How can I start the program over again

Time:09-25

I'm trying to start the game over if the user enters "Yes". I tried using a while loop, but it's gone wrong somewhere that I can't find.

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

public class RockPaperScissors {

    public static void main(String[] args) {
        
        int playerScore = 0;
        int computerScore = 0;
        int round = 0;
        
        String decision;
        
        
        // Get user input
        while (round<3) {
        System.out.println("Please enter your move: Rock, Paper or Scissors");
        System.out.println(">>");
        
        Scanner input = new Scanner(System.in);
        String playerMove = input.next();
        
        // Check if user input is valid
        if (!playerMove.equalsIgnoreCase("Rock") && !playerMove.equalsIgnoreCase("Paper") && !playerMove.equalsIgnoreCase("Scissors")) {
            System.out.println("Move is invalid, Opponent gets a point");
            computerScore  ;
            round  ;
            System.out.println("Your point is "  playerScore   "; Opponent score is "  computerScore);
        } else {
            
                // Randomly generate computerMove 
        int computerInt = (int)(Math.random()*3);
        String computerMove = " ";
        
        if (computerInt == 0) {
                computerMove = "Rock"; 
        
        } else if (computerInt == 1) {
                computerMove = "Paper";
            
        } else if (computerInt == 2) {
                computerMove = "Scissors";}
        
        System.out.println("Opponent move is "  computerMove);
        
        // Establish winning or losing scenarios
        if (playerMove.equalsIgnoreCase(computerMove)) {
            System.out.println("Tied");
            round  ;
            System.out.println("Your point is "  playerScore   "; Opponent score is "  computerScore);
        
        } else if (playerMove.equalsIgnoreCase("Rock") && computerMove.equalsIgnoreCase("Scissors") ||
            playerMove.equalsIgnoreCase("Scissors") && computerMove.equalsIgnoreCase("Paper") ||
            playerMove.equalsIgnoreCase("Rock") && computerMove.equalsIgnoreCase("Paper")) {
                System.out.println("You won");
                playerScore  ;
                round  ; 
                System.out.println("Your point is "  playerScore   "; Opponent score is "  computerScore);
                }
        
             else { 
                System.out.println("You lost");
                computerScore  ;
                round  ;
                System.out.println("Your point is "  playerScore   "; Opponent score is "  computerScore);
                }
        }
            
                    // Determine the last winner
                if (playerScore < computerScore) {
                    System.out.println("You lose, so sad ;(");
                } else if (playerScore > computerScore) {
                    System.out.println("You win, here's a cookie ;) ");
                } else {
                System.out.println("Tied, maybe try harder ^_^"); }
        }
                System.out.println("Do you wanna play again?");
                
                 }
                
                
                }
                
                
            
                }
    

CodePudding user response:

Sounds like this might be a HW or Test question, so just writing steps to help you out:

  • first have a user-decision variable and initialize it to "Y"
  • then put the game in a while(user-decision="Y") loop
  • at the end of this loop ask the user for their decision and update the user-decision variable to either Y or N
  • if they say Y loop continues, else it ends

CodePudding user response:

if you need to repeat your code, put it in a new class (Game) and instantiate in main () and call until your Game class returns TRUE (press Y)

package appMain;
import java.util.Scanner;
public class Game {
  
   public Boolean PlayGame() {
         System.out.println("START GAME");
         //
         // >>   PUT THERE YOUT GAME CODE  <<
         // 
         Scanner input = new Scanner(System.in);
         String answer = input.next();

         if(answer.equals("Y")) {
                return true;
         }
         return false;
   }
}


package appMain;
public class GameMain {
         public static void main(String args[]) {
                Game game =  new Game();
                while (game.PlayGame()) {
                }
                System.out.println("GAME finish");
         }
}
  •  Tags:  
  • java
  • Related