|
#!/usr/bin/env perl
die "Usage: $0 method radius [swing]\n" unless @ARGV >= 2;
my $method = shift ;
my $radius = shift ;
our @map ;
our $MAX_X = 79;
our $MAX_Y = 24;
for my $y ( 0 .. $MAX_Y ) {
for my $x ( 0 .. $MAX_X ) {
$map [ $y ][ $x ] = '.' ;
}
}
raycast(
\&{ $method },
sub {
my ( $lx , $ly ) = @_ ;
return -1 if $lx < 0 or $lx >= $MAX_X or $ly < 0 or $ly >= $MAX_Y ;
$map [ $ly ][ $lx ] = '#' ;
return 1;
},
40,
12,
$radius ,
$method eq 'swing_circle' ? shift () : ()
);
for my $y ( 0 .. $MAX_Y ) { print join ( '' , $map [ $y ]->@* ), "\n" }
|