#!/usr/bin/env ruby # -*- coding: utf-8 -*- #ちょっとかっこよくなったhappyou require"curses" require"csv" include Curses def delete dy = 0 while not dy == cols dx = 0 while not dx == lines setpos(dy,dx) delch dx += 0.03125 / 2 end dy += 1 end refresh end def loding(ld,lu) printf("\e[0;1m") delete curs_set(0) lx = 0 srand() ly = rand(ld..lu) while not lx == ly setpos(lines - 1,cols - 13) addstr"読み込み中" refresh ldot = 0 lx += 1 sleep(0.6) while not ldot == 3 addch"." refresh ldot += 1 sleep(0.5) end delete refresh end end def cprint(cc,cy,cx,ct) setpos(cy,cx) printf("\e[m%s",cc) addstr(sprintf("%s",ct)) refresh end def choice(cu,cd,cn) x = cols / 2 + cn y = 4 sentaku = 1 while 1 #1 printf("\e[1;37m") setpos(y,x) addstr(">") refresh input = getch setpos(y,x) addch(" ") refresh case input when Curses::KEY_UP if y != cu y -= 2 sentaku -= 1 end when Curses::KEY_DOWN if y != cd y += 2 sentaku += 1 end when Curses::KEY_RIGHT break end end delete return sentaku end sentaku = 0 init_screen begin while 1#2 delete curs_set(0) noecho stdscr.keypad(true) cprint("\e[1;21;33m",1,cols / 2 -5,"学習ゲーム") cprint("\e[91m", 4,cols / 2 -5,"タイピング") cprint("\e[94m", 6,cols / 2 -2,"計算") cprint("\e[92m", 8,cols / 2 -5,"豆知識辞典") cprint("\e[95m",10,cols / 2 -2,"電卓") cprint("\e[96m",12,cols / 2 -5,"理科・社会") cprint("\e[m" ,14,cols / 2 -2,"終了") sentaku = choice(4,14,-7) if sentaku == 6 # 終了 break end loding(1,2) if sentaku == 1 # タイピング close_screen system("ruby chinamini.rb") init_screen =begin while 1#3 delete refresh cprint("\e[1;4;31m",1,cols / 2 -5,">-=未定=-<") cprint("\e[33m",4,cols / 2 -2,"未定") cprint("\e[33m",6,cols / 2 -2,"未定") cprint("\e[33m",8,cols / 2 -2,"未定") cprint("\e[m",10,cols / 2 -2,"戻る") sentaku = choice(4,10,-4) if sentaku == 4 break end cprint("\e[1;37m",lines / 2,cols / 2 -14,"どれかのキーを押してスタート") getch delete if sentaku == 1 elsif sentaku == 2 elsif sentaku == 3 end end loding(1,2) redo =end elsif sentaku == 2 # 計算 while 1#4 delete cprint("\e[1;4;34m",1,cols / 2 -5,">-=計算=-<") cprint("\e[34m",4,cols / 2 -7,"足し算・引き算") cprint("\e[34m",6,cols / 2 -7,"掛け算・割り算") cprint("\e[34m",8,cols / 2 -2,"設定") cprint("\e[m",10,cols / 2 -2,"戻る") sentaku = choice(4,10,-9) if sentaku == 3 redo elsif sentaku == 4 break end cprint("\e[1;37m",lines / 2,cols / 2 -14,"どれかのキーを押してスタート") getch delete keisan_kaisi = Time.now keisan_mondai = 20 keisan_toketa = 0 keisan_tokenai = 0 while keisan_mondai != keisan_toketa cprint("\e[94m",1,1,sprintf("当たった問題数 %-2s問",keisan_toketa)) if sentaku == 1 # +- srand() keisan_1 = rand(1..20) keisan_2 = rand(1..20) keisan_type = rand(1..2) if keisan_type == 1 keisan_ans = keisan_1 + keisan_2 cprint("\e[1m",lines / 2 - 1,cols / 2 - 3.5,sprintf("%2d + %2d",keisan_1,keisan_2)) elsif keisan_type == 2 keisan_ans = keisan_1 - keisan_2 cprint("\e[1m",lines / 2 - 1,cols / 2 - 3.5,sprintf("%2d - %2d",keisan_1,keisan_2)) end elsif sentaku == 2 # */ end setpos(lines / 2 + 1,cols / 2 - 1) echo player_ans1 = getch player_ans2 = getch if keisan_ans.to_s.length >= 2 player_ans3 = getch if keisan_ans.to_s.length >= 3 player_ans = [player_ans1,player_ans2,player_ans3].compact.join if keisan_ans.to_s == player_ans keisan_toketa += 1 else keisan_tokenai += 1 end delete player_ans1,player_ans2,player_ans3 = nil,nil,nil end end loding(1,2) redo elsif sentaku == 3 # 豆知識辞典 close_screen print"\e[m" system("ruby j2114_last.rb") init_screen =begin while 1#5 delete cprint("\e[1;4;32m",1,cols / 2 - 5,">-=未定=-<") cprint("\e[m",4,cols / 2 -2,"戻る") sentaku = choice(4,4,-4) if sentaku == 1 break end end loding(1,2) =end elsif sentaku == 4 # 電卓 close_screen print"\e[m" system("ruby j2124_last.rb") init_screen elsif sentaku == 5 # 理科・社会 close_screen print"\e[m" system("ruby ume_quiz.rb") init_screen end end delete ensure close_screen end