----Next_Part(Tue_Sep__2_12:55:41_1997)-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit ¤³¤ó¤Ë¤Á¤Ï ¾®ß·@ÆüΩ ¤Ç¤¹¡£ From: Kikutani Makoto <kikutani / jdc.ericsson.se> Subject: [ruby-list:3926] Curses (Re: document for beginner) Date: Fri, 29 Aug 97 13:50:13 +0900 > Fri, Aug 29, 1997 at 12:54:15PM +0900 ¤Ë¤ª¤¤¤Æ > Masaki Suketa ¤µ¤óÛ©¤¯: > > > >curses¤Ê¤ó¤«¤Ï»È¤¤¤«¤¿¤¬¤ï¤«¤é¤Ê¤¤¤ó¤Ç¤¹¤±¤É¡£ > > »ä¤â»È¤¤Êý¤ï¤«¤é¤Ê¤«¤Ã¤¿¤ó¤Ç¡¢curses.c ¥Õ¥¡¥¤¥ë¤È C ¤Î curses > > library¤ÎÀâÌÀ¤¬ºÜ¤Ã¤Æ¤¿Ëܤò¸µ¤Ë¡¢»î¹Ôºø¸í¤·¤Þ¤·¤¿¡£ > > Â礷¤¿¤³¤È¤·¤Æ¤Ê¤¤¤ó¤Ç¤¹¤±¤É curses »È¤¦»²¹Í¤Ë¤Ê¤ì¤Ð¤È»×¤¤°Ê²¼¤Ë > > ¥¹ÉÕ¤±¤Þ¤¹¡£ ¤ï¤¿¤·¤âÃÙ¤ì¤Ð¤»¤Ê¤¬¤é curses ¤Î¥µ¥ó¥×¥ë¤ò ·¤Þ¤¹¡¨Â îãõòóåó±®¹®¤Î¥¹¤Ë´Þ¤Þ¤ì¤Æ¤¤¤¿ C ¤Î¥µ¥ó¥×¥ë¤ò ruby ¤Ç ´¹¤¨¤¿¤â¤Î¤Ç¤¹¡¨Âòáéî®ã ¤È view.c ¤ÎÆó¤Ä¤À¤±¤Ç¤¹¡£ ¤Ç¤Ï¤Ç¤Ï¡£ -- ¾®ß· ¾´°ì Keep it simple, stupid. mailto:ozawa / omika.hitachi.co.jp ----Next_Part(Tue_Sep__2_12:55:41_1997)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Description: "rain.rb" #!/usr/local/bin/ruby # rain for a curses test require "curses" include Curses def onsig(sig) close_screen exit sig end def ranf rand(32767).to_f / 32767 end # main # for i in 1 .. 15 # SIGHUP .. SIGTERM if trap(i, "SIG_IGN") ! then # 0 for SIG_IGN trap(i) {|sig| onsig(sig) } end end init_screen nl noecho srand xpos } ypos } r ines - 4 c ols - 4 for i in 0 .. 4 xpos[i] c * ranf).to_i + 2 ypos[i] r * ranf).to_i + 2 end i while TRUE x c * ranf).to_i + 2 y r * ranf).to_i + 2 setpos(y, x); addstr(".") setpos(ypos[i], xpos[i]); addstr("o") i f i 0 then 4 else i - 1 end setpos(ypos[i], xpos[i]); addstr("O") i f i 0 then 4 else i - 1 end setpos(ypos[i] - 1, xpos[i]); addstr("-") setpos(ypos[i], xpos[i] - 1); addstr("|.|") setpos(ypos[i] + 1, xpos[i]); addstr("-") i f i 0 then 4 else i - 1 end setpos(ypos[i] - 2, xpos[i]); addstr("-") setpos(ypos[i] - 1, xpos[i] - 1); addstr("/ \\") setpos(ypos[i], xpos[i] - 2); addstr("| O |") setpos(ypos[i] + 1, xpos[i] - 1); addstr("\\ /") setpos(ypos[i] + 2, xpos[i]); addstr("-") i f i 0 then 4 else i - 1 end setpos(ypos[i] - 2, xpos[i]); addstr(" ") setpos(ypos[i] - 1, xpos[i] - 1); addstr(" ") setpos(ypos[i], xpos[i] - 2); addstr(" ") setpos(ypos[i] + 1, xpos[i] - 1); addstr(" ") setpos(ypos[i] + 2, xpos[i]); addstr(" ") xpos[i] ypos[i] refresh sleep(0.5) end # end of main ----Next_Part(Tue_Sep__2_12:55:41_1997)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Description: "view.rb" #!/usr/local/bin/ruby require "curses" include Curses # # main # if ARGV.size ! then printf("usage: view file\n"); exit end begin fp pen(ARGV[0], "r") rescue raise "cannot open file: #{ARGV[1]}" end # signal(SIGINT, finish) init_screen #keypad(stdscr, TRUE) nonl cbreak noecho #scrollok(stdscr, TRUE) # slurp the file data_lines ] fp.each_line { |l| data_lines.push(l) } fp.close lptr while TRUE i while i < lines setpos(i, 0) #clrtoeol addstr(data_lines[lptr + i]) #if data_lines[lptr + i] i + end explicit ALSE n while TRUE c etch.chr if c "[0-9]" then n 0 * n + c.to_i else break end end n if !explicit && n 0 case c when "n" #when KEY_DOWN i while i < n if lptr + lines < data_lines.size then lptr + else break end i + end #wscrl(i) when "p" #when KEY_UP i while i < n if lptr > 0 then lptr - else break end i + end #wscrl(-i) when "q" break end end close_screen ----Next_Part(Tue_Sep__2_12:55:41_1997)----