足够无聊的一段 Script——PHP 命令行下的 Matrix 效果

转载

[img right][file=76][/img]最近更多的是拿 PHP 写 script,在 DOS 窗口下看回显(效率高些,主要是跑时间长点的东西不会受 http 连接的 timeout 限制),有次滚屏快了点,让人想起了《Matrix》,抽了几分钟,写了点这么个玩意,然后又花了十几分钟修正……效果如右图

代码如下:

[phpcode]
$iWidth = 79; // 文本宽度
$iDensity = 4; // 密度

$aDown = array();
$sText = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
."~`!@#$%^&*(){}[]_+-=\\\"'|<>?.,/";
$iText = strlen($sText) - 1;

$aArrow = array();
for ($i = 0; $i < $iWidth; $i++) {
$aDown[$i] = 0;
}

while (1) {
for ($i = 0; $i < $iWidth; $i++) {
$aDown[$i]--;
if ($aDown[$i] < 0) {
$aArrow[$i] = mt_rand(0, $iDensity);
$aDown[$i] = mt_rand(10, 25);
}
if ($aArrow[$i] == 1) {
echo substr($sText, mt_rand(0, $iText), 1);
} else {
echo " ";
}
}
echo "\n";
// usleep(1000);
}
[/phpcode]

另存成 .php,在 DOS 窗口下执行,例如“E:\Server\PHP\php.exe E:\www\matrix.php”

$sText 控制显示的内容,比方说可以让它只 = "01"

$aDown[$i] = mt_rand(10, 25); 这行控制绿条的长度,我原来是 3,10,老乔说长点好看,我试了下,觉得 10,25 还不错

更多的是要调整 DOS 窗口的属性,把显示文字调成绿色,最好把窗口宽度也加大,我选的是字体大小 8 * 12,宽度 150

显示效果还不够理想,一是我不知道普通 DOS 窗口能否控制显示颜色,应该绿色有不同的明暗(哪怕仅仅是标准 16 色中的那两种绿),这样就会产生立体感了,二是公司的 LCD 不可能有 2ms or 4ms 那种响应速度,一跑快就花了,三是毕竟这是简单字符高度级滚屏,而不是象素级的。

完整的桌面截图:[url=[file=77]][file=77][/url]