端末エミュレータのエスケープシーケンスを使ったアスキーアニメなんてものがある事を知ったのでちょっと自分でキャプチャしてみました。画像は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) |
ウィンドウのキャプチャ方法
上の画像はスクリーンキャストで保存した連番ファイルを結合して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ファイルで再現できるのかもしれませんね。
参考リンク
VT100.net: Animation http://vt100.net/animation/
- VT100アニメーションファイルを公開しているサイトの一例 http://www.ibiblio.org/pub/multimedia/animation/vt100-animation/
- YouTube - VT100 ASCII Animation: TwilightZone http://www.youtube.com/watch?v=ipikgmVCNW4&NR=1
0 件のコメント:
コメントを投稿