Paste: Simple test program
Author: | SoC |
Mode: | factor |
Date: | Sun, 10 Jun 2012 12:23:56 |
Plain Text |
USING: kernel strings namespaces grouping io sequences math
combinators generalizations ;
IN: mapgen
CONSTANT: WIDTH 10
CONSTANT: HEIGHT 10
CONSTANT: AREA 100
CONSTANT: WALL CHAR: #
CONSTANT: FLOOR CHAR: .
SYMBOL: *map* AREA WALL <string> *map* set-global
: map-rows *map* get WIDTH group ;
: map>string map-rows "\n" join ;
: .map map>string print ;
: i'-map WIDTH * + *map* get ;
: map[] i'-map nth ;
: map[]! i'-map set-nth ;
: left [ 0 ] dip nth ;
: right [ 1 ] dip nth ;
: up [ 2 ] dip nth ;
: down [ 3 ] dip nth ;
: left-right { [ left ] [ right ] } cleave ;
: up-down { [ up ] [ down ] } cleave ;
: left! [ 0 ] dip set-nth ;
: right! [ 1 ] dip set-nth ;
: up! [ 2 ] dip set-nth ;
: down! [ 3 ] dip set-nth ;
: room-area
{
[ left-right swap - ]
[ up-down swap - ]
} cleave * ;
: dig-here FLOOR -rot map[]
: dig
{ [ left-right ] [ up-down ] } cleave
[ dig-here ] 2each
2drop ;
New Annotation