The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
NAME
    Games::Roshambo - Perl OO Rock/Paper/Scissors

VERSION
    This document describes Games::Roshambo version 1.01

SYNOPSIS
            #!/usr/bin/perl

            use Games::Roshambo;

            my $rps = Games::Roshambo->new();

            print $rps->judge("rock") . "\n";
            print $rps->judge("scissors", "rock") . "\n";

DESCRIPTION
    This module manages a game of Rock/Paper/Scissors, aka Roshambo
    <http://en.wikipedia.org/wiki/Rock,_Paper,_Scissors>

INTERFACE
    "new(...)"
        You can specify an optional hashref containing configuration items.

        Valid configuration items are:

        "numthrows"
            The number of separate valid throws for a game, for example, in
            Rock, Paper, Scissors, there are 3 throws, while in a spirited
            game of RPS-101, there are 101 valid throws. If not specified,
            this defaults to 3.

        "sortable"
            OPTIONAL: Behold the madness of Chris Prather. Passing a TRUE
            value to "new" for this item will cause the "judge" method to
            return values of -1 if Player 1 wins, 0 for a tie and 1 for
            Player 2, instead of the 0, 1 and 2 it does normally.

            The entirely dubious benefit of this is that the function can be
            used in conjunction with "sort". It's his fault. He asked for
            it. Any questions as to the relative usefulness of this should
            be directed at him. The management disavows all knowledge.

    "judge(...)"
        This method will judge a game of RPS, returning a 1 for Player 1
        winning, a 2 for Player 2, and a 0 for a tie. (See the "sortable"
        option to "new" above for a twist.)

        It takes up to two arguments, indicating the throws for Player 1 and
        Player 2, as text representations.

        If one or both arguments are omitted, the method will internally
        call $self->gen_throw to randomly generate one.

    "getaction"
        When called with two throws, this will return the text of the action
        for this combination. For example, if called as
        "$rps-"getaction("rock", "paper")> the returned value will be
        "covers".

        This module contains actions for three throw (Rock, Paper, Scissors)
        and 101 throw games, in any other number of throws, this method will
        return undef.

DEPENDENCIES
    None.

RPS-101
    This module exists solely because I was trying to come up with an
    algorithmic method of judging a game of RPS-101.
    <http://www.umop.com/rps101.htm>.

    David Lovelace has done a bang-up job, some would say to the point of
    obsession, in defining the throws and actions of a game of Roshambo with
    101 separate throws. The throw names and actions defined in this module
    are taken from his set of definitions.

BUGS AND LIMITATIONS
    No bugs have been reported.

    Please report any bugs or feature requests to
    "bug-acme-rps@rt.cpan.org", or through the web interface at
    <http://rt.cpan.org>.

AUTHOR
    Chris Thompson <cpan@cthompson.com>

LICENCE AND COPYRIGHT
    Copyright (c) 2008, Chris Thompson <cpan@cthompson.com>. All rights
    reserved.

    This module is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself. See perlartistic.

DISCLAIMER OF WARRANTY
    BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
    FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
    OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
    PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
    EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
    ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH
    YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
    NECESSARY SERVICING, REPAIR, OR CORRECTION.

    IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
    WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
    REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE LIABLE
    TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, OR
    CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
    SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
    RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
    FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
    SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
    DAMAGES.