Why not adopt me?
NAME
Games::Board::Grid - a grid-shaped gameboard
VERSION
version 1.013
SYNOPSIS
use Games::Board::Grid;
my $chess = Games::Board->new(size => 8);
my $rook = Games::Board::Piece->new(id => 'KR')->move(to => '7 7');
DESCRIPTION
This module provides a base class for representing a board made up of spaces on a right-angled grid.
METHODS
new
my $board = Games::Board::Grid->new(size => $size);
This method constructs a new game board and returns it. As constructed it has no spaces or pieces on it. The size
argument may be an integer, to produce a square board, or an arrayref containing two integers, to produce a rectangular board.
init
This method sets up the spaces on the board.
size
id2index
my $index = $board->id2index($id);
This method returns the grid location of an identified space, in the format [$x, $y]
. In Games::Board::Grid, the index [x,y]
becomes the id 'x y'
. Yeah, it's ugly, but it works.
Reimplementing this method on a subclass can allow the use of idiomatic space identifiers on a grid. (See, for example, the chess-custom.t test in this distribution.)
index2id
my $id = $board->index2id($index);
This method performs the same translation as id2index
, but in reverse.
space
my $space = $board->space($id);
This method returns the space with the given $id
. If no space with that id exists, undef is returned.
add_space
This method, provided by Games::Board, will croak immediately if called.
Games::Board::Grid::Space
The spaces on a grid board are blessed into this class. It acts like a Games::Board::Space object, but directions are given as arrayrefs with x- and y-offsets. For example, a knight's move might be represented as:
$board->space('1 0')->dir([2,1]);
AUTHOR
Ricardo SIGNES <rjbs@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2003 by Ricardo SIGNES.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.