#!../perl6

say "RPS v0.2 p - Paper, r - rock, s - scissors (q for quit)";
# based on the chromatic example in blog

class Thing             {}
class Rock     is Thing {}
class Paper    is Thing {}
class Scissors is Thing {}

multi sub defeats(Thing    $t1, Thing    $t2) { say 'You LOOSE!' };
multi sub defeats(Paper    $t1, Rock     $t2) { say 'You WIN!' };
multi sub defeats(Rock     $t1, Scissors $t2) { say 'You WIN!' };
multi sub defeats(Scissors $t1, Paper    $t2) { say 'You WIN!' };


my @t = (Paper.new, Rock.new, Scissors.new);

for =$*IN {

    my $you;
    my $my;
    when 'p' { $you = @t[0]  }
    when 'r' { $you = @t[1]  }
    when 's' { $you = @t[2]  }
    when 'q' { exit }

    when /^(p|r|s)$/ {
        say 'Your ' ~ $you.WHAT;
        $my = @t[int rand(@t)];
        say 'My ' ~ $my.WHAT;

        #if $you ~~ $my { say 'Draw.' } # don`t work (
        if $you.WHAT eq $my.WHAT { say 'Draw.' }
        else { defeats($you, $my ) }
    }
  
}

