Rock, paper, scissors may seem like a simple game to build, however it offers a great base case for how to build a rule’s engine that can be scaled up for more complex systems. In this guide we’ll examine how to build the game so that users can play against the computer.
Develop a Rock, Paper, Scissors game that allows users to play against the computer.
Build a game class that allows users to guess
scissors. Additionally, build a method that generates a random guess from the computer. Finally, pass both guesses through a rule’s engine to return who is the winner of the game is. Focus on building a rule’s engine that could scale to other rules instead of simply creating a large conditional.
# Examples below assume the computer guesses 'paper' rps = RPS.new(guess: 'rock') rps.winner_is # => 'Computer wins' rps = RPS.new(guess: 'Scissors') rps.winner_is # => 'You win!' rps = RPS.new(guess: 'paper') rps.winner_is # => 'Tie'
Real World Usage
This is a popular coding interview question, not because it’s overly complex, but because it allows you to demonstrate your problem solving ability, especially as it relates to code flexibility. If you were to build this game and the rule’s engine was comprised of a long set of conditionals, as soon as new rules were added to the game, the program would become convoluted and difficult to alter. However if you properly separate the game concerns it becomes easier to manage.
Can be found on the solutions branch on github.