Game-Life-Faster

 view release on metacpan or  search on metacpan

script/game-life-faster  view on Meta::CPAN


sub cmd_clear_grid {
    $life->clear();
    return;
}

sub cmd_clear_point {
    my ( $x, $y ) = @_;
    $life->unset_point( $x, $y );
    return;
}

sub cmd_clear_screen {
    print CLEAR_STRING;
    return;
}

sub cmd_dead {
    return _state_opt( dead => @_ );
}

sub cmd_dump {
    my ( $method, @arg ) = @_;
    my $data = $method ? $life->$method( @arg ) : $life->{grid};
    if ( eval { require Data::Dump; 1; } ) {
	print Data::Dump::dump( $data ), "\n";
    } elsif ( eval { require Data::Dumper; 1; } ) {
	no warnings qw{ once };
	local $Data::Dumper::Terse = 1;
	local $Data::Dumper::Sortkeys = 1;
	print Data::Dumper::Dumper( $data );
    } else {
	die "No dumper available\n";
    }
    return;
}

sub cmd_exit {
    pop @reader_stack;
    return;
}

sub cmd_grid {
    $opt{autoclear}
	and cmd_clear_screen();
    print "$_\n" for $life->get_text_grid( $opt{living}, $opt{dead} );
    return;
}

sub cmd_help {
    pod2usage( { -verbose => 2, -exitval => 'NOEXIT' } );
    return;
}

sub cmd_living {
    _state_opt( living => @_ );
    return;
}

sub cmd_load {
    local @ARGV = @_;
    my %o = %opt;
    GetOptions( \%o,
	qw{ living=s },
    ) or return;
    my ( $file, $x, $y ) = @ARGV;
    $x ||= 0;
    $y ||= 0;
    my @rows;
    local $_ = undef;
    open my $fh, '<:encoding(utf-8)', $file
	or die "Unable to open $file: $!\n";
    while ( <$fh> ) {
	s/ \s+ \z //smx;
	push @rows, $_;
    }
    close $fh;
    $life->place_text_points( $x, $y, $o{living}, @rows );
    return;
}

sub cmd_new {
    my @arg = @_;
    Getopt::Long::GetOptionsFromArray( \@arg, \%opt, qw{ faster! } )
	or return;
    my ( $size, $breed, $live ) = @arg;
    _size( size => $size );
    _rule( breed => $breed );
    _rule( live => $live );
    my $class;
    if ( $opt{faster} ) {
	$class = 'Game::Life::Faster';
	require Game::Life::Faster;
    } else {
	$class = 'Game::Life';
	require Game::Life;
    }
    print "$class->new( ", join( ', ', map{ _expand( $opt{$_} ) } qw{
	    size breed live } ), ")\n";
    $life = $class->new( map { $opt{$_} } qw{ size breed live } );
    return;
}

sub cmd_pause {
    my ( $pause ) = @_;
    defined $pause
	and _pause_opt( pause => $pause );
    print "pause $opt{pause}\n";
    return;
}

sub cmd_used {
    my ( $living, $dead ) = @_;
    my ( $min_x, $min_y, $rslt ) = $life->get_used_text_grid(
	$living, $dead );
    print "$min_x,$min_y\n$rslt";
    return;
}

sub cmd_place_points {
    my ( $x, $y, @array ) = @_;



( run in 1.312 second using v1.01-cache-2.11-cpan-364913b4093 )