class Rockpaperscissors123::Game

Attributes

moves[R]
players[R]

Public Class Methods

new(args = {}) click to toggle source
# File lib/rockpaperscissors123/game.rb, line 5
def initialize(args = {})
  @moves = ["rock", "paper", "scissors"]
  @players = args[:players]
end

Public Instance Methods

determine_outcome(players) click to toggle source
# File lib/rockpaperscissors123/game.rb, line 31
def determine_outcome(players)
  if players[0].move == players[1].move
    "Tie"
  else
    determine_winner(players)
  end
end
determine_winner(players) click to toggle source
# File lib/rockpaperscissors123/game.rb, line 39
def determine_winner(players)
  outcomes = {  ["paper", "rock"]    => "Player one wins",
                ["scissors", "paper"] => "Player one wins",
                ["rock", "scissors"] => "Player one wins"
              }
  outcomes[[players[0].move, players[1].move]] || "Player two wins"
end
play() click to toggle source
# File lib/rockpaperscissors123/game.rb, line 10
def play
  players.each { |player| player.decide_move }
  validate_moves(players)
  render_outcome(players)
end
render_outcome(players) click to toggle source
# File lib/rockpaperscissors123/game.rb, line 26
def render_outcome(players)
  puts determine_outcome(players)
  puts "Player one threw: #{ players[0].move } | Player two threw: #{ players[1].move }"
end
validate_move(move) click to toggle source
# File lib/rockpaperscissors123/game.rb, line 22
def validate_move(move)
  moves.include?(move)
end
validate_moves(players) click to toggle source
# File lib/rockpaperscissors123/game.rb, line 16
def validate_moves(players)
  players.each do |player|
    player.decide_move unless validate_move(player.move)
  end
end