NAME

Games::Sequential - sequential games framework with OO interface

SYNOPSIS

package Games::Sequential::SomethingOrOther;
use base Games::Sequential;

sub apply { ... }

my $game = Games::Sequential::SomethingOrOther->new($initialpos);
$game->debug(1);

$game->move($mv);
$game->undo;

DESCRIPTION

Games::Sequential provides a simple base class for sequential games. It provides an undo mechanism, as it keeps track of the history of moves, in addition to methods to clone a game state with or without history.

DOMAIN-SPECIFIC METHODS

Users must inherit from this module and implement an apply method particular to the game in question. This method takes care of creating a new position by copying the current position and applying the provided move to it.

The method will probably look something along these lines (sans error checking):

sub apply {
  my ($self, $pos, $move) = @_;
  my $newpos = copy_pos($pos);

  ... apply $move to $newpos ...

  return $newpos;
}

METHODS

Users must not modify the referred-to values of references returned by any of the below methods.

new $initialpos [@list]

Create and return a new AlphaBeta object. The first argument must be the initial position of the game. The debug option can also be set here.

_init [@list]

Internal method

Initialize an AlphaBeta object.

debug [$value]

Return current debug level and, if invoked with an argument, set to new value.

peek_pos

Return reference to current position. Use this for drawing the board etc.

peek_move

Return reference to last applied move.

move $move

Apply $move to the current position, keeping track of history. A reference to the new position is returned, or undef on failure.

undo

Undo last move. A reference to the previous position is returned, or undef if there was no more moves to undo.

TODO

Implement missing methods, e.g.: clone(), snapshot(), save() & resume().

SEE ALSO

The author's website, describing this module and other projects: http://brautaset.org/projects/

AUTHOR

Stig Brautaset, <stig@brautaset.org>

COPYRIGHT AND LICENCE

Copyright (C) 2004 by Stig Brautaset

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.3 or, at your option, any later version of Perl 5 you may have available.