#!/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.09); @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\ncomputer:\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) || ($y1 <= 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;