« Python + Django でURLにセッションを組み込む(携帯で使えるはず) | Nginx + PHP(FastCGIモード)で最速なwebサーバ »

2009.08.07

python cursesでTUIプログラミング

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをnewsingに追加

次々と新しい技術が生まれては消えてゆくこのご時世ですが、
基本に立ち返り黒い画面を見つめ直そう、ということで、
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
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

No comments.

Comment feed

Comment





XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>