awkでテキストアニメーション
以前、斎藤さんの本
で紹介されていたawkでテキストアニメーションのソースコードです。
元のコードは読みにくい形でしたので整形して掲載いたします。
しかし、こんな短いプログラムで奇麗なテキストアニメーションが出るんですね。
このコードの作者はawkでテトリスも作っており、まさに凄腕ハッカーです。
#! /usr/bin/awk -f # $Id: blobs.awk,v 1.4 2006/01/31 23:14:38 tnn Exp $ # AWK eyecandy. resize your terminal emulator for speed/resolution. # (c) 2004 Tobias Nygren <tnn+blobs-awk@nygren.pp.se> # uncomment this line if your awk is mean # function fflush(e) {} function f(m, n){ o = + x - X / 2 - cos(a * m) * 30; p=y- Y / 2 - sin(a * n) *9; return sqrt (o * o + p * p); } BEGIN { c = "stty size"; c | getline; close (c); X = $2; Y = $1 - 1; for(;;){ a += +.002; d=" ead beef "; printf("" "tnn@netilium.o" "rg \033" "[H" ); #@ ninja fflush(stdout);; for(y = 0;y++ < Y;) { for (x=0 ;x++< X;){ printf ("%c", 32+(f(30 ,40) *f(0 +12, 17)/ 3/(1 +f(19 ,+23 )))% 64) } } } }
awkでこんなことも出来るのか!と感動します。
現在、プログラミング言語AWKで一から勉強中ですが、古い言語ながら未だに新たな発見の多い言語です。