Code Monkey home page Code Monkey logo

rock_paper_scissors_game's Introduction

In this project, let's build a Rock Paper Scissors by applying the concepts we have learned till now.

Refer to the image below:


rock paper scissors output

Design Files

Click to view

Set Up Instructions

Click to view
  • Download dependencies by running npm install
  • Start up the app using npm start

Completion Instructions

Functionality to be added

The app must have the following functionalities

  • When you click on the Rules button, it should trigger a popup, and rules image should be displayed

  • Initially, the score displayed should be 0

  • The App is provided with choicesList. It consists of a list of choice objects with the following properties in each choice object

    Key Data Type
    id String
    imageUrl String
  • When any of the three buttons (i.e Rock, Paper, Scissors) is clicked, then the Game Results View should be displayed

  • In the Game Results View, the opponent choice should be generated randomly among these three buttons (i.e Rock, Paper, Scissors)

  • When the Rock button is clicked, then the rock image should be displayed as your choice in the Game Results View

  • When the Paper button is clicked, then the paper image should be displayed as your choice in the Game Results View

  • When the Scissors button is clicked, then the scissors image should be displayed as your choice in the Game Results View

    Game Rules

    Click to view the Game Rules
    rules image
    • Game result based on choices

      • When your choice is paper and the opponent choice is rock, then the result will be YOU WON
      • When your choice is scissors and the opponent choice is rock, then the result will be YOU LOSE
      • When your choice is rock and the opponent choice is paper, then the result will be YOU LOSE
      • When your choice is scissors and the opponent choice is paper, then the result will be YOU WON
      • When your choice is rock and the opponent choice is scissors, then the result will be YOU WON
      • When your choice is paper and the opponent choice is scissors, then the result will be YOU LOSE
      • When your choice and the opponent choice match, then the result will be IT IS DRAW
  • When the result is YOU WON, then the score should be incremented by one

  • When the result is IT IS DRAW, then there shouldn't be any change in the score

  • When the result is YOU LOSE, then the score should be decremented by one

  • When the PLAY AGAIN button is clicked, then the Playing View should be displayed

  • Quick Tips

    Click to view
    • You can use Math.random() function to get a random number (float value) in range 0 to less than 1 (0 <= randomNumber < 1)

      Math.random()
      
    • You can use Math.floor() function that returns the largest integer less than or equal to a given number

      console.log(Math.floor(5.95)); // output: 5

    Important Note

    Click to view
    • You can use reactjs-popup for displaying the modal
    • RiCloseLine icon from react icons can be used for the close button at React Popup

    The following instructions are required for the tests to pass

    • Styled Components should be used for styling purposes
    • The Page should consist of three HTML button elements with data-testid attribute values as rockButton, scissorsButton and paperButton respectively
    • In Game Results View, the page should consist of an HTML image element with alt as your choice and src as URL for your choice image
    • In Game Results View, the page should consist of an HTML image element with alt as opponent choice and src as URL for opponent choice image
    • Roboto should be applied as font-family for Score value

    Resources

    Image URLs
    Colors
    Hex: #ffffff
    Hex: #223a5f
    Font-families
    • Roboto
    • Bree Serif

    Things to Keep in Mind

    • All components you implement should go in the src/components directory.
    • Don't change the component folder names as those are the files being imported into the tests.
    • Do not remove the pre-filled code
    • Want to quickly review some of the concepts you’ve been learning? Take a look at the Cheat Sheets.

    rock_paper_scissors_game's People

    Contributors

    mrinal76 avatar

    Stargazers

     avatar

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.