#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-

question = [] #問題文
type = [] #パラーメータのタイプ
choices1 = [] #選択肢を代入する配列　「はい」
choices2 = [] #選択肢を代入する配列　「ふつう」
choices3 = [] #選択肢を代入する配列　「いいえ」

count = 0 #while文の繰り返し回数制御用
qnumber = 1 #質問番号の表記用

c1score = 2 #「はい」のメタスコア
c2score = 1 # [ふつう]のメタスコア,「いいえ」は加算しないためなし

status = [0,0,0,0]
sumstatus = [0,0,0,0]
avestatus = [0,0,0,0]

bar = "-" * 50


puts("このプログラムは２つ目のゲームプログラムで使うキャラクターを作成するプログラムです！")
sleep(3)
puts("これから出題される全16問の質問に答えると、結果に応じてステータスが決定されます！")
sleep(2)
puts("様々な質問がありますが、簡単なゲーム感覚で、気楽に答えてみて下さい!")
sleep(2)
puts("\e[33m回答する際は、半角数字で選択肢の番号を入力してください！")
print("\e[m")
sleep(2)
puts("では、早速始めます!\n\n")
sleep(3)

open("shitsumon.txt","r:utf-8") do |mondai|
  while line = mondai.gets
    if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ line
      type[count] = $1
      question[count] = $2
      choices1[count] = $3
      choices2[count] = $4
      choices3[count] = $5
      count += 1
    end
  end
end

question = Hash[question.zip type] #2つの配列を1つにハッシュ化
question = question.to_a #ハッシュを2次元配列化
question.shuffle! #indexの順番入れ替え
#p question
copyquestion = question.transpose[0] #2次元配列の0番目のindexを指定したものを、新しい変数に入れている
copytype = question.transpose[1] #2次元配列の1番目のindexを指定したものを、新しい変数に入れている

#p copyquestion[0]
count = 0   #数値をリセット,別の変数を定義して使っても良い
#p question.transpose[1]
#p copytype[count]

while count < 16
    printf("第%d問 %s\n",qnumber,copyquestion[count])
    printf("1. %s\n",choices1[count])
    printf("2. %s\n",choices2[count])
    printf("3. %s\n",choices3[count])

    #p sumstatus
    print("回答　")
    answer = gets.to_i

    if answer == 1 && copytype[count] == "H"
      sumstatus[0] += c1score
    elsif answer == 2 && copytype[count] == "H"
      sumstatus[0] += c2score
    elsif answer == 1 && copytype[count] == "A"
      sumstatus[1] += c1score
    elsif answer == 2 && copytype[count] == "A"
      sumstatus[1] += c2score
    elsif answer == 1 && copytype[count] == "D"
      sumstatus[2] += c1score
    elsif answer == 2 && copytype[count] == "D"
      sumstatus[2] += c2score
    elsif answer == 1 && copytype[count] == "R"
      sumstatus[3] += c1score
    elsif answer == 2 && copytype[count] == "R"
      sumstatus[3] += c2score
    elsif answer == 3
       #何もせずにif-endを抜ける
    else
      print("\e[33m正しく入力して下さい。")
      puts("\e[m")
      redo 
    end
    qnumber += 1
    count += 1
end

count = count / 4
avestatus[0] = sumstatus[0].to_f / count
avestatus[1] = sumstatus[1].to_f / count
avestatus[2] = sumstatus[2].to_f / count
avestatus[3] = sumstatus[3].to_f / count

#p avestatus

if avestatus[0] >= 1.5
  status[0] += 4000
elsif avestatus[0] >= 0.75
  status[0] += 3750
else 
  status[0] += 3500
end
if avestatus[1] >= 1.5
  status[1] += 550
elsif avestatus[1] >= 0.75
  status[1] += 500
else 
  status[1] += 450
end
if avestatus[2] >= 1.5
  status[2] += 650
elsif avestatus[2] >= 0.75
  status[2] += 600
else 
  status[2] += 550
end
if avestatus[3] >= 1.5
  status[3] += 3000
elsif avestatus[3] >= 0.75
  status[3] += 2750
else 
  status[3] += 2500
end

#p status

sleep(0.5)
"...\n".each_char do |char|
  print(char)
  sleep(0.7)
end
puts("\n以上で質問は終了です\n")
sleep(1)
puts("最後にあなたの分身となるキャラクターに名前をつけましょう！")
puts("キャラクター名を入力してください")
name = gets.chomp!
#p name
sleep(1)
puts("\n\e[33mキャラクターのステータスが決定しました！")
puts("\e[m")
sleep(1)
puts(bar)
print("\n")
printf(" キャラクター名は %s です\n",name)
sleep(1)

printf(" 体力　:HP  は %4d です",status[0])
if status[0] == 4000
  puts("   高め！")
elsif status[0] == 3750
  puts("   平均的")
else
  puts("   ちょっと低めかな...")
end
sleep(1)

printf(" 攻撃力:ATK は %4d です",status[1])
if status[1] == 550
  puts("   高め！")
elsif status[1] == 500
  puts("   平均的")
else
  puts("   ちょっと低めかな...")
end
sleep(1)

printf(" 防御力:DEF は %4d です",status[2])
if status[2] == 650
  puts("   高め！")
elsif status[2] == 600
  puts("   平均的")
else
  puts("   ちょっと低めかな...")
end
sleep(1)

printf(" 回復力:MP  は %4d です",status[3])
if status[3] == 3000
  print("   高め！\n\n")
elsif status[3] == 2750
  print("   平均的\n\n")
else
  print("   ちょっと低めかな...\n\n")
end
sleep(1)
puts(bar)
puts("\n回答ありがとうございました！")
puts("続いて space2.rb を実行し、冒険をお楽しみください！")
puts("キャラクターを作り直す場合は space.rb を再度実行してください")

open("yourstatus.txt","w:utf-8") do |file|
  file.printf("%s %d %d %d %d",name,status[0],status[1],status[2],status[3])
end  