<!DOCTYPE html> <html> <!-- Default style for pretty-print of text files --> <head><title>typing_game.rb</title> <style type="text/css"> pre {margin-left: 6ex;} pre span {counter-increment: linenum; text-align: right; position: relative;} pre span:before { position: absolute; right: 0px; background: #ddd; text-align: right; padding: 0 0.2ex; width: 5.5ex; margin-right: 0.5ex; content: counter(linenum) ":"; } </style> </head> <body> <p>[[ <a href="?showattc+article_m+672+raw">RAW TEXT</a>(DOWNLOAD here) ]]</p> <pre lang="en"> <span></span>#!/usr/bin/env ruby <span></span># -*- coding: utf-8 -*- <span></span> <span></span>require"curses" <span></span>require"csv" <span></span> <span></span>include Curses <span></span> <span></span>def loding(ld,lu) <span></span> printf("\e[0;1m") <span></span> clear <span></span> curs_set(0) <span></span> lx = 0 <span></span> srand() <span></span> ly = rand(ld..lu) <span></span> while not lx == ly <span></span> setpos(lines - 1,cols - 13) <span></span> addstr"読み込み中" <span></span> refresh <span></span> ldot = 0 <span></span> lx += 1 <span></span> sleep(0.6) <span></span> while not ldot == 3 <span></span> addch"." <span></span> refresh <span></span> ldot += 1 <span></span> sleep(0.5) <span></span> end <span></span> clear <span></span> refresh <span></span> end <span></span>end <span></span> <span></span> <span></span>def cprint(cc,cy,cx,ct) <span></span> printf("\e[m") <span></span> printf(cc) <span></span> setpos(cy,cols / 2 + cx) <span></span> addstr(sprintf("%s",ct)) <span></span> refresh <span></span>end <span></span> <span></span>init_screen <span></span>begin <span></span> while 1 <span></span> clear <span></span> curs_set(0) <span></span> noecho <span></span> stdscr.keypad(true) <span></span> cprint("\e[0;1;21;33m",1,-8,"タイピング ゲーム") <span></span> cprint("\e[0;1;31m",4,-2,"遊ぶ") <span></span> cprint("\e[0;1;34m",6,-2,"設定") <span></span> cprint("\e[0;1;32m",8,-2,"終了") <span></span> x = cols / 2 - 4 <span></span> y = 4 <span></span> sentaku = 1 <span></span> while 1 <span></span> printf("\e[1;31m") <span></span> setpos(y,x) <span></span> addstr(">") <span></span> refresh <span></span> input = getch <span></span> setpos(y,x) <span></span> addch(" ") <span></span> refresh <span></span> case input <span></span> when Curses::KEY_UP <span></span> if y != 4 <span></span> y -= 2 <span></span> sentaku -= 1 <span></span> end <span></span> when Curses::KEY_DOWN <span></span> if y != 8 <span></span> y += 2 <span></span> sentaku += 1 <span></span> end <span></span> when Curses::KEY_RIGHT <span></span> break <span></span> end <span></span> end <span></span> if sentaku == 1 <span></span> loding(1,2) <span></span> while 1 <span></span> clear <span></span> refresh <span></span> cprint("\e[1;4;31m",1,-5,">-=遊ぶ=-<") <span></span> cprint("\e[1;33m",4,-2,"初級 2~7文字") <span></span> cprint("\e[1;33m",6,-2,"中級 5~10文字") <span></span> cprint("\e[1;33m",8,-2,"上級 9~14文字") <span></span> cprint("\e[1;32m",10,-2,"戻る") <span></span> x = cols / 2 - 4 <span></span> y = 4 <span></span> sentaku = 1 <span></span> while 1 <span></span> printf("\e[1;31m") <span></span> setpos(y,x) <span></span> addch(">") <span></span> input = getch <span></span> setpos(y,x) <span></span> addch(" ") <span></span> refresh <span></span> case input <span></span> when Curses::KEY_UP <span></span> if y != 4 <span></span> y -= 2 <span></span> sentaku -= 1 <span></span> end <span></span> when Curses::KEY_DOWN <span></span> if y != 10 <span></span> y += 2 <span></span> sentaku += 1 <span></span> end <span></span> when Curses::KEY_RIGHT <span></span> break <span></span> end <span></span> end <span></span> clear <span></span> if sentaku == 4 <span></span> break <span></span> end <span></span> cprint("\e[1;37m",lines / 2,-14,"どれかのキーを押してスタート") <span></span> getch <span></span> clear <span></span> if sentaku == 1 <span></span> elsif sentaku == 2 <span></span> elsif sentaku == 3 <span></span> end <span></span> end <span></span> loding(1,2) <span></span> redo <span></span> elsif sentaku == 2 <span></span> loding(1,1) <span></span> while 1 <span></span> clear <span></span> cprint("\e[1;4;34m",1,-5,">-=設定=-<") <span></span> cprint("\e[1;32m",4,-2,"戻る") <span></span> x = cols / 2 - 4 <span></span> y = 4 <span></span> sentaku = 1 <span></span> while 1 <span></span> print("\e[1;31m") <span></span> setpos(y,x) <span></span> addstr(">") <span></span> refresh <span></span> input = getch <span></span> setpos(y,x) <span></span> addch(" ") <span></span> refresh <span></span> case input <span></span> when Curses::KEY_UP <span></span> if y != 4 <span></span> y -= 2 <span></span> sentaku -= 1 <span></span> end <span></span> when Curses::KEY_DOWN <span></span> if y != 4 <span></span> y += 2 <span></span> sentaku += 1 <span></span> end <span></span> when Curses::KEY_RIGHT <span></span> break <span></span> end <span></span> end <span></span> break <span></span> end <span></span> loding(1,1) <span></span> redo <span></span> elsif sentaku == 3 <span></span> clear <span></span> refresh <span></span> break <span></span> end <span></span> end <span></span> clear <span></span> ensure <span></span> close_screen <span></span>end </pre> </body> </html>