2009.08.07
python cursesでTUIプログラミング
次々と新しい技術が生まれては消えてゆくこのご時世ですが、
基本に立ち返り黒い画面を見つめ直そう、ということで、
python cursesによるTUI(Text User Interface)プログラミングを練習してみました。
curses とは
まずは、軽く curses とは何ぞや?という話をいたしますと、
Unix や Linux に備わっている端末の出力を動的に制御できるAPIをcursesといいます。
CUIプログラミングをした場合、普通は 「出力をすると」 いえば、
標準出力を使って上から下にだーーーーっと出力を流すものですが、
cursesを使うことで、例えば vi のような、アプリケーションっぽい出力を行うことができます。
参考) Wikipedia - Curses
どんなことが出来る?
黒い画面だからとナメちゃいけません。
座標は、細かくても (行, 列) 単位での制御しかできませんが、
例えば、内部でウィンドウを複数作って重ね合わせたり、
「論理的なウィンドウを裏で作って、実際にはその一部を表示」なんてことも出来ます。
cursesから返って来るエラーがわかりにくいので、プログラミングしにくいという点はありますが、
概ね、妄想するようなアプリは(理屈として)は作ることができるでしょう。
python curses
Pythonバインディングは、1.6からPythonの標準ライブラリに入っています。
参考) http://www.python.jp/doc/release/lib/module-curses.html
PHPやRuby用のバインディングもあるようです。
参考リンク
参考にしたエントリ達です、大感謝。
http://d.hatena.ne.jp/SumiTomohiko/20070507/1178541054 (基礎的な説明)
http://d.hatena.ne.jp/yukiue_hirohara/20081017 (サンプル)
http://d.hatena.ne.jp/mopemope/20090608/p1 (サンプル)
http://d.hatena.ne.jp/ousttrue/20080228/1204226210 (サンプル)
サンプルアプリケーション
>> SimpleRouge

simplerouge posted by (C)kjirou
※ tar.gzをDLして、適当な場所に解凍し main.pyを実行すると開始します。
注意として、端末サイズを 60列 x 21行 以上にしてから実行してください、
それ以下だとpythonエラーになってしまいます。
※ python-2.5.2 で動作確認しました。Windowsだと動きません。
※ “h”, “j”, “l”, “k” で上下左右移動、”q” で終了します。
そう・・・何より curses を学べば、
Rogue like RPG Online を 妄想 できる という、
素晴らしき人生の特権を得ることができるでしょう!
Trackback URL
Comment & Trackback
Comment feed
Comment