How to Make a Rock-Paper-Scissors Game in Java | Beginner Java Project | Juni Learning

 If you want to learn more about making games in Java, this tutorial can be good inspiration for how to make simple games with code before getting into any complicated graphics or game user interfaces.

All you'll need is basic familiarity with Java, and experience using foundational concepts like conditionals and loops. Watch the tutorial video to see how we code this game step-by-step, and continue reading this post for more details.

Table of Contents

  • Project Intro: 0:21
  • Demo: 0:44
  • General order of steps: 1:26
  • Step 1: 1:56
  • Step 2: 2:10
  • Step 3: 2:56
  • Step 4: 6:44
  • Step 5-6: 9:33
  • Extra features/suggestions: 13:13

Who is this project for?

The learning outcomes for beginner Java coding project rock paper scissors.

This project info and learning outcomes summary will help you decide if this project is right for you.

This project falls under our Juni Java Level 1 coding class for kids. This beginner Java tutorial is for students that want a easy challenge project, about 50~75 lines long. You should review variables, input and output, and conditionals beforehand to get the most out of this project.

Some other projects you can try first for more practice with beginner Java are our Java tic tac toe game and code a Maze Runner in Java tutorials.
For learning outcomes, you'll get a lot of practice with conditionals, loops, and random numbers.

Project Demo

Click run to see the project yourself!

You can also view my project solution code if you get stuck.

Things to keep in mind:

  • The user inputs their move by typing either rock, paper, or scissors.
  • The opponent’s move is chosen randomly and the program prints out whether you won, tied, or lost.
  • The program keeps asking the user to input their move after each round until they type in quit, which is when the program ends.
  • If you type in something random, then the program prints “Your move isn’t valid!”

Steps to Build this Project:

  1. Ask the user to enter in their move.
  2. Check if the user entered a valid move.
  3. Randomly generate the opponent’s move.
  4. Use conditionals to figure out if you won, lost, or tied.
  5. Use a loop to continue asking the user for their move.
  6. Check if the user wants to quit.

How do we do each of these steps?

Step 1: Ask the user to enter in their move.
  • First, we import the Scanner class to help us get input from the user, by adding import java.util.Scanner to the top of our program.
  • Then, we create our Scanner variable.
  • Next, we print out a message asking the user to type in rock, paper, or scissors using System.out.print().
  • We store their input in a String called myMove.
Step 2: Check if the user entered a valid move.

Use a conditional to check whether myMove is equal to rock, paper, or scissors. If it isn’t equal to rock, paper, or scissors, then we can print out a message to the user stating that their move wasn’t valid!

Step 3: Randomly generate the opponent’s move.

In order to randomly generate the opponent’s move, we can use Math.random(). Math.random() only generates a decimal in between 0 and 1, including 0 and excluding 1. But, since there are 3 possible moves in rock, paper, scissors, we need 3 possible random numbers! How can we do this?

Hint: We can use Math.random() * 3 to generate a random number in between 0 and 3, including 0 and excluding 3. We can then cast this value to an int so that our random numbers only include 0, 1, and 2 – no decimals in between.

Now we need to translate our random number, which can be 0, 1, or 2, into a String opponentMove which is either rock, paper, or scissors.

Hint: Use conditionals to perform the following check: if the random number is 0, then the opponent’s move will be rock; if the random number is 1, then the opponent’s move will be paper; if the random number is 2, then the opponent’s move will be scissors.

Step 4: Use conditionals to figure out if you won, lost, or tied.

Let’s first check if it was a tie. If the opponent’s move was the same as your move, then it is a tie.

Hint: We can use .equals() to check equality between two strings. If myMove is equal to opponentMove, then it is a tie.

We can now go into an else if and check if the user has won. Let’s go through all of the possible situations in which the user wins: the user has rock and the opponent has scissors, the user has scissors and the opponent has paper, or the user has paper and the opponent has rock.

  • We can use && and || to make one giant if statement!
  • Let’s translate what we just said into code: if (myMove equals rock and opponentMove equals scissors) or (myMove equals scissors and opponentMove equals paper) or (myMove equals paper and opponentMove equals rock), then print that the user has won. Else, we can print that the user has lost.

Step 5: Use a loop to continue asking the user for their move.

We want to keep asking the user to enter their move. How can we do this?

Hint: We can put all of our code for asking the user for their move, checking if they entered a valid move, randomly generating the opponent’s move, and figuring out whether the user won, tied, or lost in a while(true) loop.

But now our game will run forever! How do we make the while loop stop?

In order for a while(true) loop to stop, we need a break statement in the body of the loop. We can ask the user if they want to quit the game.

Step 6: Check if the user wants to quit.
  • In our print statement asking the user for their move, we can also ask them to type quit if they want to end the game.
  • Inside our while loop, let’s use an if statement to check whether or not the user entered quit.
  • If the user did type quit, we can exit out of the while loop using a break statement.

Challenge Yourself with Extra Features

Check out the bonus extended project features below, or see the solution code if you get stuck.
Add a score counter that counts the number of wins and losses.
  1. Outside of our while loop, create two int variables: one for wins and one for losses.
  2. Increment wins and losses when the user wins and loses, respectively.
  3. We can use shorthand notation ++ to increment wins and losses.
  4. After each game, print out the wins and losses.
  5. Once the user quits, use conditionals to print out whether the user won more games, lost more games, or won and lost an equal number of games.

Creative suggestions:
  • Make your own moves! For example, “fire defeats all MWAHAHA!” (reference to Friends).

Great job! Check out more tutorials.

Thanks for watching and hope you had fun making this Rock, Paper, Scissors project with me!
Every week, we’ll be posting project tutorials like this one, for different coding languages and experience levels.
Visit our coding projects blog page to find our other tutorials in more coding languages! You can also subscribe to our newsletter using the form to the right of this page for more updates on our programs and newest coding tutorials.

Need more help, or want to keep learning?

A Juni instructor teaching Python.
A Juni Instructor teaches basic Python to a young student.
Looking up your coding questions is one of the best ways to learn! Another great way to learn is from an experienced coder or instructor.
Juni Learning Computer Science Instructors work closely with students ages 8-18, and are specially trained to adapt to each child's unique learning style, pace, and interests.
Read more about our online coding classes for kids, or contact our Admissions Team to learn which course is best for your student’s coding journey.

This article originally appeared on