Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Re: The Matrix Reloaded: JAPH

by abell (Chaplain)
on Sep 02, 2003 at 09:00 UTC ( [id://288269]=note: print w/replies, xml ) Need Help??


in reply to Re: The Matrix Reloaded: JAPH
in thread The Matrix Reloaded: JAPH

A possibility is redrawing the whole screen at each frame. For instance (only tested on linux):

#!/usr/bin/perl -w # Array containing all lines my @screen = ( ' 'x70 . "\n" ) x 20; # Array of possible (equiprobable) characters my @char = split //, ' *|'; while(1) { print join '', @screen; # Drop last line pop @screen; # Put a new line on top unshift @screen, join ( '', map { $char[ rand(@char) ] } (1..70) ) + . "\n"; # Sleep for 0.1 seconds select(undef, undef, undef, 0.1); }

Update: The value 20 in the @screen initialization should be at least the terminal height minus 1 (due to the last line being empty). If it's less, then the upper portion of each frame is filled by the last lines of the previous one.

Cheers

Antonio

The stupider the astronaut, the easier it is to win the trip to Vega - A. Tucket

Replies are listed 'Best First'.
Re: Re: Re: The Matrix Reloaded: JAPH
by crouchingpenguin (Priest) on Sep 03, 2003 at 13:15 UTC

    So, incorporating abell and cfreak's suggestions, you get:

    #!/usr/bin/perl -w @screen = ( ' 'x70 . "\n" ) x 20; $gen_line = sub { my $qw; for(1..70){ if( !$q[$_] && rand > .993 ){ $q[$_] = q$.$ x 5 . q$ $ x 1 . ${ [ qw$tsuJ rehtona lreP rekcaH$ ] }[$qq++] . q$ $ x 1 . q$.$ x 5; $qq = $qq > 3 ? 0: $qq; } if( $q[$_] ){ ( $qx, $q[$_] ) = split//, $q[$_],2; $qw .= $qx; }else{ $qw .= q$ $; } } "\33[0;32m$qw\33[0m"; }; while(1) { print join '', @screen; # Drop last line pop @screen; # Put a new line on top unshift @screen, $gen_line->() . "\n"; # Sleep for 0.1 seconds select(undef, undef, undef, 0.1); }

    Cool, monks! =]


    cp
    ----
    "Never be afraid to try something new. Remember, amateurs built the ark. Professionals built the Titanic."
Re: Re: Re: The Matrix Reloaded: JAPH
by nimdokk (Vicar) on Sep 02, 2003 at 12:03 UTC
    Seems to work nicely under ActiveState Perl 5.8.0 on Windows 2000.


    "Ex libris un peut de tout"

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://288269]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (3)
As of 2024-03-19 05:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found