```On Sun, Oct 18, 2009 at 6:21 AM, Matt Beckley <greenlizards / yahoo.com>wrote:

> Trying to write code for rock paper scissors game and read in two values
> from people playing. Take those values and determine the outcome. As I
> understand an array you are able to compare values with the <=> and I
> think this is the big jump I need to making things work. I would have
> something like this:
>
>  a = [rock,paper,scissors] #Comparison array
>  b = [userinput1 , userinput2] #User store .a values
>
>
>  if userinput1 < userinput2   #loop for showing who wins
>  elsif userinput1 > userinput2
>  else userinput1 == userinput2
>
> So my question is how do I go about comparing my two arrays to determine
> a outcome? I think a hash is the way to go, not sure how to make the
> jump. please include code. Thanks,
> --
> Posted via http://www.ruby-forum.com/.
>
>

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

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
```