Games::Battleship::Grid - A Battleship grid class


Games-Battleship documentation  | view source Contained in the Games-Battleship distribution.

Index


NAME

Top

Games::Battleship::Grid - A Battleship grid class

SYNOPSIS

Top

  use Games::Battleship::Grid;

  $grid = Games::Battleship::Grid->new(
      fleet => \@fleet,
      dimension => [$width, $height],
  );

DESCRIPTION

Top

A Games::Battleship::Grid object represents a Battleship playing surface complete with fleet position references and line intersection collision detection.

PUBLIC METHODS

Top

new %ARGUMENTS

* fleet => [$CRAFT_1, $CRAFT_2, ... $CRAFT_N]

Optional array reference of an unlimited number of Games::Battleship::Craft objects.

If provided, the fleet will be placed on the grid with random but non-overlapping positions.

Naturally, it is required that the combined sizes of the ships be less than the area of the grid.

* dimensions => [$WIDTH, $HEIGHT]

Optional array reference with the grid height and width values.

If not provided, the standard ten by ten playing surface is used.

PRIVATE FUNCTIONS

Top

_tail_coordinates @COORDINATES, $SPAN
  ($orientation, $x1, $y1) = _tail_coordinates($x0, $y0, $span);

Return a vector for the craft. That is, hand back the vertical or horizontal line segment orientation and the tail coordinates based on the head coordinates and the length of the segment (i.e. the craft).

_segment_intersection @COORDINATES
  $intersect = _segment_intersection(
      p_x0, p_y0,  p_x1, p_y1,
      q_x0, q_y0,  q_x1, q_y1
  );

Return zero if there is no intersection (or touching or overlap).

Each pair of values define a coordinate and each pair of coordinates define a line segment.

TO DO

Top

Allow diagonal craft placement.

Allow placement restriction rules (e.g. not on edges, not adjacent, etc.) as an arrayref of boundary equations or regular expressions.

Allow some type of interactive craft repositioning.

Allow > 2D playing spaces.

SEE ALSO

Top

Games::Battleship

Games::Battleship::Craft

Segment intersection:

http://www.meca.ucl.ac.be/~wu/FSA2716/Exercise1.htm

AUTHOR

Top

Gene Boggs <gene@cpan.org>

COPYRIGHT AND LICENSE

Top


Games-Battleship documentation  | view source Contained in the Games-Battleship distribution.