#!/usr/bin/perl
start:
$|=1;
use Term::ReadKey;
ReadMode 3;
($w, $h) = GetTerminalSize;
$n = 0.97; #AI sternght
$l = 10; #difficulty
$x1 = $w/2; $y1 = $h/2;
@dxs = (-0.09, -0.08, -0.07, -0.06, -0.05, 0.05, 0.06, 0.07, 0.08, 0.0
+9);
@d = (0.05, -0.05);
$dx = $d[rand @d];
$dy = $d[rand @d];
$x = $w/2-5;
while (1) {
$key = ReadKey -1;
if ($key eq "d") {$x++; $x = $w-10 if $x > $w-10}
if ($key eq "a") {$x--; $x = 0 if $x < 0}
$s = " " x (($x1-5)*$n) . "[========]";
$s .= "\n" x $y1 . " " x $x1 . "o";
$s .= "\n" x ($h-$y1-4) . " " x $x . "[========]\n\nyou:\t\t$you\ncomp
+uter:\t$pc\n\r";
print $s;
$dx *= -1 if $x1 >= $w-1 || $x1 <= 0;
$dy *= -1 if ($y1 >= $h-5 && $x1 > $x && $x1 < $x+10) || ($y1 <= 1 &&
+ $x1 > (($x1-5)*$n) && $x1 < (($x1+5)*$n));
$dx = $dxs[$x1-$x] if ($y1 >= $h-5 && $x1 > $x && $x1 < $x+10) || ($y
+1 <= 1 && $x1 > (($x1-5)*$n) && $x1 < (($x1+5)*$n));
$x1 += $dx;
$y1 += $dy;
if ($y1 < 0) {ReadMode 0; ++$you; sleep 1; goto start}
if ($y1 > $h-4) {ReadMode 0; ++$pc; sleep 1; goto start}
select(undef, undef, undef, 0.005/$l);
system('clear');
}
ReadMode 0;
saving everything inside $s (: now it works perfectly (it has some minor bugs, but whatever) |