こういう感じね。
ソースはこれ。
public static void main(String[] args) { //文字色を変える for(int i=0;i<8;i++) System.out.println("\u001b[00;3"+i+"m esc[00;3"+i+" \u001b[00m"); //背景色を変える for(int i=0;i<8;i++) System.out.println("\u001b[00;4"+i+"m esc[00;4"+i+" \u001b[00m"); }
色を変えているのは
"\u001b[00;3"+i+"m"
ここ、適当に色変更のためのエスケープシークエンスを送っています。
(参考:技なれど波高し LinuxのCUIプログラムの標準出力の文字の色を変える)
ただ、参考のサイトだとbyte型をsystem.out.writeで書き出していてちょっとめんどくさいので、適当にbyte型のエスケープ文字をjavaのエスケープシークエンス¥uxxx(16進数の文字を出力)で復元しています。
そして文字色を元に戻す時は
"\u001b[00m"
簡単ですよね!私はこのサンプル作るのに結構時間かかりましたけど。
で、なんでこんなことをやっているのかと言うと、たまたまCUIのTwitterクライアント作っていて見た目を参考にしたearthquake.gemがそんな感じのことをやっていて、大変悩んで文字色を変えるってことをやったわけで。
いろいろ調べてみたけどムツカシイやり方で色を変えるサンプルしか見つからなくて、いろいろ悩んでやっと色を変えられたのでメモっておこうという感じ。
こういうの最初にやる人スゴいっすよね。