glider-gun's Blog

何か書きます

点字でライフゲーム

roswell スクリプトとしてライフゲームを作ってみました。 前回同様コンソールで動かすのに cl-charms を使っています。 こんな感じです。

動画を見ると点が一番上のステータス表示より高い密度で表示されてるのがわかると思いますが、これはパターンの表示に点字を使ってみているからです。点字は縦横4x2の8点のパターンからなるので、これを使うとライフゲームの8倍高密度な表示が出来ます。unicodeの点字の文字コードと点の配置とは割と規則的に作られているので、盤面から文字コードを逆算するようにしました(参照: https://en.wikipedia.org/wiki/Braille_Patterns )。 行と行の間で多少すきま開いたりはしてますが、そんな悪くないんじゃないでしょうか。

今回これを作っていて、ターミナルとして使うアプリによって動作速度が違うのが興味深かったです。上の動画はmacに元々入っているターミナルで動作させているのですが、iTerm2では(特にフルスクリーン状態では)フレームレートが10倍くらい落ちます。どうもncursesでワイド文字を描画しようとすると大きな速度差があるみたいです(ascii文字の範囲ではどっちで動かしても高速に動作していました)。

処理系はsbclのみ対応です。最新版のcl-charmsでないと動かないので、cl-charms関連でエラーが出たら一旦

1
2
$ ros run
* (ql:update-all-dists)

を試して見るといいかもしれません。あるいは

1
$ ros use sbcl

が必要かも?

Comments