Scissor, Paper, Stone (JavaScript)

One of the earlier programs I wrote in Python was Scissor, Paper, Stone. It’s an old game that most people learn as a child, the premise of which is;

  • There are two (2) players.
  • Each player must make a secret choice from 3 options (Scissor, Paper or Stone)
  • The players reveal their choice at the same time
  • Scissor beats paper. Paper beats Stone. Stone beats Scissor.

Turning this into a playable game;

  • Player one (1) is the user (human)
  • Player two (2) is the computer
  • Player one will need an input option to choose Scissor, Paper or Stone
  • Player two will need a random number generator to generate a number between 1 and 3, each number is referenced to one of the selections (e.g. 1 equals Scissor).
  • Player one’s and Player two’s selections must then be compared and a winner announced.

I’m writing the game in a text editor and then running it in the web browsers JavaScript console.

First I tackled the random number generation for the computer, using JavaScripts Random() function:

// geektechstuff

var numberGuess = Math.floor((Math.random()*3+1));
var computerChoice

if (numberGuess == 1) {
computerChoice = 'Paper';
} else if (numberGuess == 2){
    computerChoice = 'Scissor';
} else if (numberGuess == 3){
    computerChoice = 'Stone';
} else {
    computerChoice = 'Error!'
}

console.warn(computerChoice)

JavaScript_random

The I added in the ability for a user to enter a number for their choice:

// geektechstuff

var numberGuess = Math.floor((Math.random()*3+1));
var computerChoice
var userChoice = prompt("Please enter a number 1, 2 or 3", "1");
var userNamedChoice

if (numberGuess == 1) {
computerChoice = 'Paper';
} else if (numberGuess == 2){
    computerChoice = 'Scissor';
} else if (numberGuess == 3){
    computerChoice = 'Stone';
} else {
    computerChoice = 'Error!'
}

if (userChoice == 1) {
userNamedChoice = 'Paper';
} else if (userChoice == 2){
    userNamedChoice = 'Scissor';
} else if (userChoice == 3){
    computerChoice = 'Stone';
} else {
    userNamedChoice = 'Error!'
}


console.warn('Computer chose:', computerChoice)
console.warn('Player chose:', userNamedChoice)

Javascript_random_2.png

Now the program needs some refining.

// geektechstuff


// variables 
 var numberGuess = Math.floor((Math.random()*3+1));
 var computerChoice = '';
 var userChoice = parseInt(prompt("Please enter a number 1 (Paper), 2 (Scissor) or 3 (Stone)", "1"));
 var userNamedChoice = '';
 var resultOfGame = '';

if (numberGuess === 1) {
computerChoice = 'Paper';
} else if (numberGuess === 2){
    computerChoice = 'Scissor';
} else if (numberGuess === 3){
    computerChoice = 'Stone';
} else {
    computerChoice = 'Error';
}

if (userChoice === 1) {
userNamedChoice = 'Paper';
} else if (userChoice === 2){
    userNamedChoice = 'Scissor';
} else if (userChoice === 3){
    userNamedChoice = 'Stone';
} else {
    userNamedChoice = 'Error';
}

// Checks to see who has won

if (numberGuess == userChoice){
    resultOfGame = 'Draw ';
} else if ((computerChoice = 'Paper')&&(userNamedChoice = 'Scissor')){
    resultOfGame = 'Player Wins';
} else if ((computerChoice = 'Scissor')&&(userNamedChoice = 'Stone')) {
    resultOfGame = 'Player Wins';
} else if ((computerChoice = 'Stone')&&(userNamedChoice = 'Paper')) {
    resultOfGame = 'Player Wins';
} else {
    resultOfGame = 'Computer Wins';
}

// declares results

console.warn('Computer Chose:', computerChoice);
console.warn('Player Chose:', userNamedChoice);
console.warn(resultOfGame);

Javascript_random_3.png

Javascript_random_4.png

 

For more information of Scissor, Paper, Stone see: https://en.wikipedia.org/wiki/Rock-paper-scissors 

One response to “Scissor, Paper, Stone (JavaScript)”

  1. BlackJack Part 1 (JavaScript) – Geek Tech Stuff Avatar

    […] JavaScript allows us to generate random numbers and store variables (see “Scissor, Paper, Stone”) it should allow me to also recreate the card game of Blackjack or 21. For more information on […]

    Like

Welcome to GeekTechStuff

my home away from home and where I will be sharing my adventures in the world of technology and all things geek.

The technology subjects have varied over the years from Python code to handle ciphers and Pig Latin, to IoT sensors in Azure and Python handling Bluetooth, to Ansible and Terraform and material around DevOps.

Let’s connect