#based on perl -MSDL::Tutorial::Drawing use strict; use warnings; use SDL::App; use SDL::Rect; use SDL::Color; use vars::i '@iterative_set' => ( sub { my @pt = ( 400, 50 ); return( ( $pt[0] + $_[0] ) / 2, ( $pt[1] + $_[1] ) / 2 ); }, sub { my @pt = ( 50, 400 ); return( ( $pt[0] + $_[0] ) / 2, ( $pt[1] + $_[1] ) / 2 ); }, sub { my @pt = ( 750, 400 ); return( ( $pt[0] + $_[0] ) / 2, ( $pt[1] + $_[1] ) / 2 ); }, ); # change these values as necessary my $title = 'My SDL Rectangle-Drawing App'; my ($width, $height, $depth) = ( 740, 640, 16 ); my ($red, $green, $blue) = ( 0x00, 0x00, 0xff ); my ($rect_width, $rect_height) = ( 1, 1 ); my ($rect_x, $rect_y) = ( 270, 190 ); my $app = SDL::App->new( -width => $width, -height => $height, -depth => $depth, ); my $color = SDL::Color->new( -r => $red, -g => $green, -b => $blue, ); { # start coordinates my $x = 40; my $y = 400; my $iter = 0; # weed out transients while( $iter++ != 100 ) { ( $x, $y ) = $iterative_set[ int rand 3 ]->( $x, $y ); } $iter = 0; while( $iter++ < 10000 ) { ( $x, $y ) = $iterative_set[ int rand 3 ]->( $x, $y ); my $rect = SDL::Rect->new( -height => $rect_height, -width => $rect_width, -x => $x, -y => $y, ); $app->fill( $rect, $color ); $app->update( $rect ); } } # your code here; remove the next line use SDL::Constants 'SDL_QUIT'; $app->loop({ SDL_QUIT() => sub { exit(0); }, });