#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'curses'
include Curses
init_screen
cbreak
noecho
waza = ["孫悟空","かめはめ波","元気玉","ベジータ","ギャリック砲","天津飯","どどん波","クリリン","気円斬","ヤムチャ","狼牙風風拳","ピッコロ","魔貫光殺砲","餃子","さよなら天さん","亀仙人","魔封波","如意棒","ウーロン","ギャルのパンティおくれ"]
rwaza = ["sonngokuu","kamehameha","gennkidama","bezi-ta","gyarikkuhou","tennsinnhann","dodonnpa","kuririnn","kiennzann","yamutya","rougahuuhuukenn","pikkoro","makannkousappou","tyaozu","sayonaratennsann","kamesennninn","mahuuba","nyoibou","u-ron","gyarunopannthiokure"]
vs = 0
ok = 0
bad = 0
point = 0
init_screen
start_color
init_pair(0, COLOR_BLACK, COLOR_WHITE)
init_pair(1, COLOR_RED, COLOR_BLACK)
init_pair(2, COLOR_RED, COLOR_WHITE)
def typ(mi,mvs,mwaza,mrwaza)
w = stdscr.subwin(10, 40, 8, 12)
w.attron(color_pair(2)) do
w.box("|"[0], "+"[0])
end
w.setpos(2, 2)
w.addstr(sprintf("VS %d",mvs+1))
w.attron(A_BOLD) do
w.setpos(2, 10)
w.addstr(sprintf("%s",mwaza[mi]))
w.setpos(3, 10)
w.addstr(sprintf("%s",mrwaza[mi]))
end
w.setpos(5, 10)
mat = w.getstr
w.clear
return mat
end
def title
setpos(1,24)
attron(color_pair(1)) do
attron(A_BOLD) do
addstr("ドラゴンタイピング!!")
end
end
end
title
begin
setpos(3,18)
addstr("これから単語が1つずつ出てくっぞ!")
setpos(4,14)
addstr("入力は全部”ローマ字”だから気をつけろよ!※ん→nn")
setpos(5,3)
addstr("しっかり打ち込めたら<エンターキー>っちゅうのを押して攻撃してくれ!")
setpos(6,13)
addstr("<やりてーモード番号>を押してスタートだ!")
while true
setpos(8,10)
addstr("1:10問必勝!採点モード 2:限界を超えろ!無限モード -> ")
start = getch
if start == "1" || start == "2"
break
else
setpos(9,2)
addstr("1か2を入力してくれ!")
end
end
refresh
clear
nocbreak
echo
title
if start == "1"
setpos(3,22)
addstr("~10問必勝!採点モード~")
refresh
while vs < 10
i = rand(19)
at = typ(i,vs,waza,rwaza)
vs += 1
if at == rwaza[i]
ok += 1
setpos(10, 55)
addstr(" すげーぞ!")
point += 10
else
bad += 1
setpos(10,55)
addstr("ヤベーぞ...")
end
setpos(11,57)
addstr(sprintf("%3d勝 %3d敗",ok,bad))
refresh
end
clear
attron(A_BOLD) do
if ok >= 9
setpos(3,37)
addstr(sprintf("%d点!!!",point))
setpos(6,16)
addstr("オメーすげーやつだな!おら驚れーたぞ!")
elsif ok >= 5
setpos(3,37)
addstr(sprintf("%d点!!",point))
setpos(6,8)
addstr("惜しかったなー、まだまだ上手くなれると思うとおらワクワクすっぞ!")
elsif ok >= 2
setpos(3,37)
addstr(sprintf("%d点!",point))
setpos(6,16)
addstr("おらと一緒に修行、いっちょやってみっか!")
else
setpos(3,37)
addstr(sprintf("%d点",point))
setpos(6,16)
addstr("ふんっ!口ほどにもない奴め")
end
end
elsif start == "2"
setpos(3,19)
addstr("~限界を超えろ!無限モード~")
setpos(4,20)
addstr("※owariと入力すると終了")
refresh
while true
i = rand(19)
at = typ(i,vs,waza,rwaza)
vs += 1
if at == rwaza[i]
ok += 1
setpos(10, 55)
addstr(" すげーぞ!")
elsif at == "owari"
break
else
bad += 1
setpos(10,55)
addstr("ヤベーぞ...")
end
setpos(11,57)
addstr(sprintf("%3d勝 %3d敗",ok,bad))
refresh
end
clear
setpos(3,20)
addstr("今回の結果が出たぞ!")
setpos(5,25)
addstr(sprintf("倒した数:%3d / %3d",ok,vs-1))
rate = ok.to_f / vs.to_f * 100
setpos(7,25)
addstr(sprintf("正答率:%5.2f %",rate))
end
setpos(9,16)
addstr("<オメーの好きなキー>を押して終わってくれ!")
en = getch
refresh
ensure
close_screen
end