はじめに
RubyでカッケーCLIアプリケーションを作りたい...
なんてこと、ありますよね?
そこでCurses
(カーシス)です
Curses?
CursesとはUNIX系システムで端末制御を行うライブラリなのですが、
それをRubyでwrapしている(と思われる)便利なgemが同名のcurses
です
個人的に使用した部分をメモとしてまとめました
導入
cursesのインストール
gem install curses
rubyでcursesを使用
require 'curses'
使い方
制御開始/終了
Curses.init_screen
で画面の制御スタート
Curses.close_screen
で制御を終了します
windowの作成
Curses::Window.new(height, width, 1, 1)
-
引数
-
行数(int)
-
列数(int)
-
何行目から開始するか(int)
CSSのpadding-topみたいなものです -
何列目から開始するか(int)
CSSのpadding-leftみたいなものです -
返り値
-
Curses::Windowオブジェクト
ここで作成したWindowオブジェクトを使用する形になります
windowの削除
Curses::Window.close
作成したWindowオブジェクトを閉じます
枠をつくる
Curses::Window.box(?|,?-,?+)
- 引数
- 縦(char)
- 横(char)
- 角(char)
引数に指定した文字で枠を生成します
枠の大きさは呼び出し元のWindowオブジェクトに依存します
画面の更新
Curses::Window.refresh
文字列などを表示させたら画面を更新してあげてください
カーソルの移動
Curses::Window.setpos(y, x)
呼び出し元のWindowの(y,x)座標にカーソルを移動させます
文字を表示させたりする際にはカーソルを事前に移動させる必要があります
文字列表示
Curses::Window.addstr(str)
- 引数
- 表示する文字列(string)
文字入力
Curses::Window.getch
入力待ち状態になります
入力した1文字が返ってきます
文字列入力
Curses::Window.getstr
先程の文字列版です
入力待ちになり、文字列が取得できます
入力文字の表示/非表示
非表示
入力された文字が表示されなくなります
Curses::noecho
表示
入力が表示されるようになります
主に文字を入力させたい場合に一時的に切り替えるために用います
Curses::echo
おわりに
え?おわり!?
はい、終わりです
基本的には上記のことだけである程度使用できるかと思います
文字の色を変えたり、その他、もっと高度なことがしたい方は、こちらのサイトが参考になるかと思います
Rubyでcursesの実験 【基本編】
Rubyでcursesの実験 【属性編】
追記
khsk様、誤字修正ありがとうございます