The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Games::PMM - the base distribution of the Paper Maché Monsters Game

DESCRIPTION

Paper Maché Monsters is a monster-battling game where wind-up monsters battle each other in an arena. These monsters run through programmable command lists until a victor emerges.

USAGE

Setup

  • Create an arena:

      use Games::PMM::Arena;
      my $arena = Games::PMM::Arena->new();
  • Create several monsters, giving them command lists:

      use Games::PMM::Monster;
    
      my @monsters;
    
      for (0 .. 5)
      {
            my $commands = load_file( "commands.$_" );
            push @monsters, Games::PMM::Monster->new(
                    commands => $commands
            );
      }
  • Place the monsters within the arena:

      my ($x, $y) = (0, 0);
    
      for my $monster (@monsters)
      {
            $arena->add_monster( $monster, x => $x, y => $y );      
            $x += 2;
            y  += 2;
      }
  • Set the monster facings:

      for my $monster (@monsters)
      {
        my $facing = (qw( north south east west ))[ int( rand( 4 ) ) ];
            $monster->facing( $facing )
      }
  • Create an Actions object to dispatch actions:

      use Games::PMM::Actions;
    
      my $actions = Games::PMM::Actions->new();

Play

Loop through the monsters, activating their command lists:

  for my $monster (@monsters)
  {
        while (my ($action, @arguments) = $monster->next_command())
        {
            my $command = $actions->can( 'action_' . $action );
                next unless $command;

                $actions->$command( $arena, $monster, @arguments );
        }
  }

Winning

That's up to you. "Last monster standing" is a good winning condition. Of course, some combinations of monsters may never reach each other. Another good option is running the game for a fixed number of rounds, declaring that the least-damaged monster wins.

Ties are acceptable.

AUTHOR

chromatic, chromatic@wgz.org

BUGS

No known bugs.

SEE ALSO

COPYRIGHT

Copyright (c) 2003, chromatic. All rights reserved. This module is distributed under the same terms as Perl itself, in the hope that it is useful but certainly under no guarantee.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 11:

Non-ASCII character seen before =encoding in 'Maché'. Assuming CP1252