NAME
Games::Sokoban - load/transform/save sokoban levels in various formats
SYNOPSIS
use Games::Sokoban;
DESCRIPTION
I needed something like this quickly - if you need better docs, you have
to ask.
Supports xsb (text), rle, sokevo and a small "binpack" format for input
and output and can normalise levels as well as calculate unique IDs.
$level = new Games::Sokoban [format => "text|rle|binpack"], [data =>
"###..."]
$level = new_from_file Games::Sokoban $path[, $format]
$level->data ([$new_data, [$new_data_format]])
Sets the level from the given data.
$text = $level->as_text
$binary = $level->as_binpack
Binpack is a very compact binary format (usually 17% of the size of
an xsb file), that is still reasonably easy to encode/decode.
It only tries to store simplified levels with full fidelity - other
levels can be slightly changed outside the playable area.
@lines = $level->as_lines
$line = $level->as_rle
http://www.sokobano.de/wiki/index.php?title=Level_format
($x, $y) = $level->start
Returns (0-based) starting coordinate.
$level->hflip
Mirror horizontally.
$level->vflip
Mirror vertically.
$level->transpose
Transpose level (mirror at top-left/bottom-right diagonal).
$level->rotate_90
Rotate by 90 degrees clockwise.
$level->rotate_180
Rotate by 180 degrees clockwise.
$id = $level->simplify
Detect playable area, crop to smallest size.
$id = $level->normalise
Simplifies the level map and calculates/returns its identity code. .
http://www.sourcecode.se/sokoban/level_id.php, assume uppercase and
hex.
$levels = Games::Sokoban::load_sokevo $path
Loads a sokevo snapshot/history file and returns all contained
levels as Games::Sokoban objects in an arrayref.
AUTHOR
Marc Lehmann <schmorp@schmorp.de>
http://home.schmorp.de/