puts "VERSION = #{VERSION}"
class RPS
Hierarchy = {
:rock => { :rock => :tie , :paper => :lose , :scissors => :win } ,
:paper => { :rock => :win , :paper => :tie , :scissors => :lose } ,
:scissors => { :rock => :lose , :paper => :win , :scissors => :tie } ,
}
Choices = Hierarchy.keys
attr_reader :guess
def initialize( guess )
guess = guess.to_sym
raise "invalid guess" unless Choices.include?(guess)
@guess = guess
end
def fight ( opponent ) Hierarchy[guess][opponent.guess] end
def beats? ( opponent ) fight(opponent) == :win end
def beat_by? ( opponent ) fight(opponent) == :lose end
def ties? ( opponent ) fight(opponent) == :tie end
def to_s ( ) guess.to_s end
end
RPS::Choices.each do |userinput1| RPS::Choices.each do |userinput2|
player1,player2 = RPS.new(userinput1),RPS.new(userinput2)
outcome = player1.fight(player2)
puts "player1 chooses #{player1.guess} and #{outcome}s " \
"the fight with player2 who chooses #{player2.guess}"
end end