2009年7月9日木曜日

[VT100]アスキーアニメーション[AA]

端末エミュレータのエスケープシーケンスを使ったアスキーアニメなんてものがある事を知ったのでちょっと自分でキャプチャしてみました。画像はGIFファイルです。

やり方は簡単で、エスケープシーケンスを含むテキストファイル(*.vt)を端末エミュレータで表示するだけ。ただしファイルの中身は一行づつ、パラパラ漫画のように時間差で表示させる方がいいみたいです(catコマンドを使うとアニメーションを見る余裕なく表示されてしまうので)。

今回はこの時間差表示を実現するためにnewlispをスクリプトとして使っていますが、端末で実行できるならCでも他のスクリプト言語で書いてもたぶんOK。

しかしこのアスキーアニメーション、実際に表示(というより再生)するために 当時の人は何の呪文を使っていたんでしょうかね。

使用したnewlispのソースは以下

#!/usr/bin/env newlisp
;;; Usage:
;; $ ./cat.lsp cat.lsp
;; $ newlisp cat.lsp http://vt100.net/animation/xmas0.txt 50
;; $ newlisp cat.lsp http://artscene.textfiles.com/vt100/twilightzone.vt
(define (cat filename (interval 0))
"FILENAMEの中身をINTERVALミリ秒間隔で表示する."
(dolist (line (parse (read-file filename) "\n"))
(println line)
(sleep interval)))
(let ((file (or (main-args 2) ""))
(n (or (int (main-args 3)) 25)))
(if (or (file? file)
(starts-with file "http://"))
(cat file n)
(println "Usage: newlisp cat.lsp [FILE|URL] [INTERVAL]")))
(exit)
view raw cat.lsp hosted with ❤ by GitHub

ウィンドウのキャプチャ方法

上の画像はスクリーンキャストで保存した連番ファイルを結合してGIFファイルにしたものです。(本当は動画形式でもキャプチャしたんですけどね。GoogleVideoへのアップロードはすでに停止されているし、YouTubeのアカウントは持ってないし、ニコニコ動画だと見れない人もいるし)

スクリーンキャストの方法については以下が参考になります。というよりそのまま使っています。

Linuxでスクリーンキャストを作成するには - SourceForge.JP Magazine http://sourceforge.jp/magazine/07/03/23/0037212

これでウィンドウのキャプチャ画像がいくらかできたのでGIF形式でまとめる

$ convert *.miff -delay 90 出力ファイル.gif

しかしキャプチャ画像だとやたらカクカクしてますね。 なので一度実際に実行してみるか他の人がYouTubeにアップロードしたものを見ることをお勧めします。

これは面白い!

キャプチャ画像ラストはアスキーアニメーションつながりで有名な"sl"コマンドです。 もしかしたらこのslも*.vtファイルで再現できるのかもしれませんね。


参考リンク

0 件のコメント:

コメントを投稿