#!/usr/bin/perl use List::Util 'shuffle'; use Time::HiRes qw(usleep); use Term::ReadKey; open(ASCII,"ascii.txt"); while () { chop; push @ascii, $_; $colmax = length if $colmax < length; } close(ASCII); for ($i=0;$i<=$#ascii;$i++) { for ($j=0;$j<$colmax;$j++) { push(@pwet,[$i,$j]); } } @pwet = shuffle(@pwet); ReadMode('cbreak'); $a = 1; sub out { ($t,@txt) = @_; $a = 0 if (defined ($char = ReadKey(-1))); print STDOUT @txt;$|=1; usleep ($t*$a); } out(0,"\e[37;40m\e[2J"); $min = 0; $max = $#pwet; for ($i=min;$i<=$max;$i++) { $j = $i + int rand($max - $i + 1); $X = $pwet[$j]->[0]; $Y = $pwet[$j]->[1]; out(3000,"\e[",$X+1,";",$Y+1,"H\e[1;37m",(substr $ascii[$X],$Y,1)); # out(0,"\e[",$X+1,";",$Y+1,"H "); $j = $i + 1 + int rand($max - $i); $X = $pwet[$j]->[0]; $Y = $pwet[$j]->[1]; out(3000,"\e[",$X+1,";",$Y+1,"H\e[0;37m",(substr $ascii[$X],$Y,1)); # out(0,"\e[",$X+1,";",$Y+1,"H "); $j = $i + 2 + int rand($max - $i - 1); $X = $pwet[$j]->[0]; $Y = $pwet[$j]->[1]; out(3000,"\e[",$X+1,";",$Y+1,"H\e[1;36m",(substr $ascii[$X],$Y,1)); # out(0,"\e[",$X+1,";",$Y+1,"H "); $X = $pwet[$i]->[0]; $Y = $pwet[$i]->[1]; out(3000,"\e[",$X+1,";",$Y+1,"H\e[1;34m",(substr $ascii[$X],$Y,1)); } sub anim1 { ($X,$Y,@T) = @_; out(0,"\e[1;37m"); for (1..3) { out(8000,"\e[",$X,";",$Y,"H\\"); out(8000,"\e[",$X,";",$Y,"H-"); out(8000,"\e[",$X,";",$Y,"H/"); out(8000,"\e[",$X,";",$Y,"H|"); } out(10000,"\e[",$X,";",$Y,"H "); out(10000,"\e[",$X,";",$Y,"H",@T); } sub anim2 { ($X,$Y,@T) = @_; out(0,"\e[1;37m"); for (1..3) { out(40000,"\e[",$X,";",$Y,"H*"); out(25000,"\e[",$X,";",$Y,"H "); out(40000,"\e[",$X,";",$Y,"H+"); out(25000,"\e[",$X,";",$Y,"H "); } usleep(20000); out(25000,"\e[",$X,";",$Y,"H",@T); } anim1(5,2,"\e[0m|"); anim1(6,2,"\e[0m|"); foreach $i (1..29) { anim1(6,2+$i,"\e[0m_"); } $i = 0; foreach $l ("\e[1;37ml","\e[1;33mi","\e[1;37mn","\e[1;37mu","\e[1;37mx","-","r","0","x") { anim2(6,33+$i,"\e[0m",$l); $i += 2; } out(0,"\e[1;37m\n\n Bienvenue sur le serveur Pegase :-)\e[0m\n\n"); ReadMode('normal');