2011-09-07 6 views
5

RubyのデフォルトのCursesライブラリで色を取得するにはどうすればよいですか?Ruby cursesの色

だから、のようなもの:素晴らしい作品

puts "\e[0m\e[30;47mtest\e[0m" 
。明るい灰色の背景に素晴らしい黒を与えます。しかし、この:

#!/usr/bin/env ruby 

require 'curses' 

Curses.noecho # do not show typed keys 
Curses.init_screen 
Curses.stdscr.keypad(true) # enable arrow keys (for pageup/down) 
Curses.stdscr.nodelay = 1 

Curses.clear 
Curses.setpos(0,0) 
Curses.addstr "Hello!" 
Curses.addstr "\e[0m\e[30;47mHello!\e[0m" 

ディスプレイ:

こんにちは!

^[[0メートル^ [[30; 47mHello^[[0メートル

は最終的に、私はこのために色を必要とする:!

How to capture a key press in Ruby?

require 'curses' 

Curses.noecho # do not show typed keys 
Curses.init_screen 
Curses.stdscr.keypad(true) # enable arrow keys (required for pageup/down) 

loop do 
    case Curses.getch 
    when Curses::Key::PPAGE 
    Curses.setpos(0,0) 
    Curses.addstr("Page Up") 
    when Curses::Key::NPAGE 
    Curses.setpos(0,0) 
    Curses.addstr("Page Dn") 
    end 
end 
+1

FYI STDLIBから 'curses'は廃止され、' ncurses'を試してみてください - 正しい持ちhttps://github.com/eclubb/ncurses-ruby/文書 – basicxman

+1

@basicxman、あなたはstdlibのcursesが非難されていると言っていますか? – cam

+0

libruby 'curses'は実際には適切な文書を持っていません。私はここで答えを見つける/入手することができました。 –

答えて

9

呪いの例があります。ルビーのソースコードでの使用法、例えば、 here

あなたのコードのようなものかもしれない

require 'curses' 
include Curses 

Curses.noecho # do not show typed keys 
Curses.init_screen 
Curses.stdscr.keypad(true) # enable arrow keys (required for pageup/down) 
Curses.start_color 
# Determines the colors in the 'attron' below 
Curses.init_pair(COLOR_BLUE,COLOR_BLUE,COLOR_BLACK) 
Curses.init_pair(COLOR_RED,COLOR_RED,COLOR_BLACK) 

loop do 

    case Curses.getch 

    when Curses::Key::PPAGE 
    Curses.clear 
    Curses.setpos(0,0) 
    # Use colors defined color_init 
    Curses.attron(color_pair(COLOR_RED)|A_NORMAL){ 
     Curses.addstr("Page Up") 
    } 
    when Curses::Key::NPAGE 
    Curses.clear 
    Curses.setpos(0,0) 
    Curses.attron(color_pair(COLOR_BLUE)|A_NORMAL){ 
     Curses.addstr("Page Down") 
    } 
    end 
end 
関連する問題