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

status = []

kaihuku = 3

mstatus = [500,300] #HP,ATK

range = (-130..130) #乱数を生成するときに使う範囲,-130から130
#p rand(range)

name = 0
ename = "スラ五郎"

bar = "-" * 50



open("yourstatus.txt","r:utf-8") do |allstatus|
  line = allstatus.gets
  if /(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/ =~ line
    name = $1
    status[0] = $2.to_i
    status[1] = $3.to_i
    status[2] = $4.to_i
    status[3] = $5.to_i
  end
end

copyhp = status[0]
#p copyhp
sleep(1)



#stage1
if status[0] > 0
  "あなたは宇宙の平和を保つ警備員。\n".each_char do |char|
    print(char)
    sleep(0.1)
  end
  sleep(0.7)
  "突如として惑星の乱れを検知したあなたは、宇宙探索を開始する!!\n\n".each_char do |char|
    print(char)
    sleep(0.1)
  end
  sleep(2)
  print("各惑星にいる敵を倒して、宇宙の平和を取り戻そう！\n\n")
  sleep(2)
  printf("stage1 月\n")
  sleep(1)
  system 'display -geometry +0+500 instructions.png&'
  sleep(2)
  system 'animate -geometry 150x150 -geometry +200+100 suraimu.gif&'
  "スラ五郎があらわれた!!".each_char do |char|
    printf(char)
    sleep(0.1)
  end
  sleep(1)
else
  #何もしない SKIP
end

while status[0] > 0
  sleep(1)
  print("\n")
  puts(bar)
  sleep(1)
  printf("\n %s のHP \e[1;33m%d\n\n",ename,mstatus[0])
  printf("\e[m\n")
  printf("%s  HP:\e[1;32m%d",name,status[0])
  printf("\e[m/%d",copyhp)
  printf("  ATK:%d  DEF:%d  MP:%d\n",status[1],status[2],status[3])
  puts("Actionを選択して下さい")
  print("1:攻撃  2:防御  3:回復  ")
  printf("回復使用可能まで%dターン\n",kaihuku)
  print("Action　")
  battle =  gets.chomp!.to_i
  puts(bar)
  print("\n")
  if battle == 1
    formula = status[1] + rand(range)
    mstatus[0] -= formula
    system 'animate -geometry 150x150 -geometry +450+300 dame.gif&'
    sleep(1)
    printf(" %sは%sに\e[1;31m%d",name,ename,formula)
    print("\e[mのダメージを与えた!\n")
    sleep(1)
    if mstatus[0] <= 0
      printf(" %sのHP \e[1;33m %d\n",ename,0)
      printf("\e[m\n")
      kaihuku -= 1
      sleep(1)
    elsif mstatus[0] > 0
      formula = mstatus[1] + rand(range)
      status[0] -= formula
      system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
      printf(" %sは%sから\e[1;31m%d",name,ename,formula)
      print("\e[mのダメージ受けた!\n")
      kaihuku -= 1
    end
  elsif battle == 2
    formula = mstatus[1] + rand(range)
    status[0] -= formula - status[2]
    if formula < status[2]
      status[0] -= (formula - status[2]) * -1
    end
    system 'animate -geometry 150x150 -geometry +450+300 def.gif&'
    sleep(1)
    printf(" %sは防御を選択!!\n",name)
    sleep(1)
    if formula < status[2]
      system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
      printf(" %sから\e[1;31m%d",ename,0)
      print("\e[mのダメージ受けた!\n")
    elsif formula >= status[2]
      system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
      printf(" %sから\e[1;31m%d",ename,formula - status[2])
      print("\e[mのダメージ受けた!\n")
    end

    kaihuku -= 1

  elsif battle == 3 && copyhp == status[0]
    sleep(1)
    puts("これ以上回復しないよ")
    redo

  elsif battle == 3 && kaihuku < 1
    formula = status[3] + rand(range)
    status[0] += formula

    if status[0] > copyhp #回復後のHPが初期値を超えたとき
      formula2 = status[0] - copyhp #初期値を超えてはみ出た部分
      formula = formula - formula2 #実際に回復した数値
      status[0] = status[0] - formula2
    end
    system 'animate -geometry 150x150 -geometry +450+300 mp.gif&'
    sleep(1)
    printf(" HPが\e[1;32m%d",formula)
    print("\e[m回復した!\n")
    sleep(1)
    printf(" %sのHP \e[1;32m%d\n",name,status[0])
    printf("\e[m\n")
    formula = mstatus[1] + rand(range)
    status[0] -= formula
    sleep(1)
    system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
    printf(" %sから\e[1;31m%d",ename,formula)
    print("\e[mのダメージ受けた!\n")
    kaihuku += 3
    
  elsif battle == 3 && kaihuku >= 1 
    sleep(1)
    print("まだ使えないよ\n")
    redo
  else
    sleep(1)
    print("入力エラー!行動を再選択して下さい\n")
    redo
  end

  if kaihuku  < 0
    kaihuku = 0
  end

  if status[0] <= 0
    sleep(1)
    printf(" %sのHP \e[1;32m%d\n",name,0)
    printf("\e[m\n\n")
    sleep(1)
    printf("%sはしにました!\n",name)
    system 'pkill animate -U `whoami`'
    break
  elsif mstatus[0] <= 0
    sleep(1)
    printf("%sを倒しました!\n\n\n\n",ename)
    sleep(1)
    system 'pkill animate -U `whoami`'
    break
  end
end



#stage2
if status[0] > 0
sleep(1)
printf("stage2 火星\n")
sleep(2)
system 'animate -geometry 200x200 -geometry +200+100 ika.gif&'
"イカ四郎があらわれた!!".each_char do |char|
  printf(char)
  sleep(0.1)
end
sleep(1)
ename = "イカ四郎"
mstatus[0] = 800
mstatus[1] = 400
else
  #何もしない SKIP
end

while status[0] > 0
  sleep(1)
  print("\n")
  puts(bar)
  sleep(1)
  printf("\n %s のHP \e[1;33m%d\n\n",ename,mstatus[0])
  printf("\e[m\n")
  printf("%s  HP:\e[1;32m%d",name,status[0])
  printf("\e[m/%d",copyhp)
  printf("  ATK:%d  DEF:%d  MP:%d\n",status[1],status[2],status[3])
  puts("Actionを選択して下さい")
  print("1:攻撃  2:防御  3:回復  ")
  printf("回復使用可能まで%dターン\n",kaihuku)
  print("Action　")
  battle =  gets.chomp!.to_i
  puts(bar)
  print("\n")
  if battle == 1
    formula = status[1] + rand(range)
    mstatus[0] -= formula
    system 'animate -geometry 150x150 -geometry +450+300 dame.gif&'
    sleep(1)
    printf(" %sは%sに\e[1;31m%d",name,ename,formula)
    print("\e[mのダメージを与えた!\n")
    sleep(1)
    if mstatus[0] <= 0
      printf(" %sのHP \e[1;33m %d\n",ename,0)
      printf("\e[m\n")
      kaihuku -= 1
      sleep(1)
    elsif mstatus[0] > 0
      formula = mstatus[1] + rand(range)
      status[0] -= formula
      system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
      printf(" %sは%sから\e[1;31m%d",name,ename,formula)
      print("\e[mのダメージ受けた!\n")
      kaihuku -= 1
    end
  elsif battle == 2
    formula = mstatus[1] + rand(range)
    status[0] -= formula - status[2]
    if formula < status[2]
      status[0] -= (formula - status[2]) * -1
    end
    system 'animate -geometry 150x150 -geometry +450+300 def.gif&'
    sleep(1)
    printf(" %sは防御を選択!!\n",name)
    sleep(1)
    if formula < status[2]
      system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
      printf(" %sから\e[1;31m%d",ename,0)
      print("\e[mのダメージ受けた!\n")
    elsif formula >= status[2]
      system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
      printf(" %sから\e[1;31m%d",ename,formula - status[2])
      print("\e[mのダメージ受けた!\n")
    end

    kaihuku -= 1

  elsif battle == 3 && copyhp == status[0]
    sleep(1)
    puts("これ以上回復しないよ")
    redo

  elsif battle == 3 && kaihuku < 1
    formula = status[3] + rand(range)
    status[0] += formula

    if status[0] > copyhp #回復後のHPが初期値を超えたとき
      formula2 = status[0] - copyhp #初期値を超えてはみ出た部分
      formula = formula - formula2 #実際に回復した数値
      status[0] = status[0] - formula2
    end
    system 'animate -geometry 150x150 -geometry +450+300 mp.gif&'
    sleep(1)
    printf(" HPが\e[1;32m%d",formula)
    print("\e[m回復した!\n")
    sleep(1)
    printf(" %sのHP \e[1;32m%d\n",name,status[0])
    printf("\e[m\n")
    formula = mstatus[1] + rand(range)
    status[0] -= formula
    sleep(1)
    system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
    printf(" %sから\e[1;31m%d",ename,formula)
    print("\e[mのダメージ受けた!\n")
    kaihuku += 3
    
  elsif battle == 3 && kaihuku >= 1 
    sleep(1)
    print("まだ使えないよ\n")
    redo
  else
    sleep(1)
    print("入力エラー!行動を再選択して下さい\n")
    redo
  end

  if kaihuku  < 0
    kaihuku = 0
  end

  if status[0] <= 0
    sleep(1)
    printf(" %sのHP \e[1;32m%d\n",name,0)
    printf("\e[m\n\n")
    sleep(1)
    printf("%sはしにました!\n",name)
    system 'pkill animate -U `whoami`'
    break
  elsif mstatus[0] <= 0
    sleep(1)
    printf("%sを倒しました!\n\n\n\n",ename)
    sleep(1)
    system 'pkill animate -U `whoami`'
    break
  end
end



#stage3
if status[0] > 0
  sleep(1)
  printf("stage3 水星\n")
  sleep(2)
  system 'animate -geometry 300x300 -geometry +170+50 tako.gif&'
  "タコ三郎があらわれた!!".each_char do |char|
    printf(char)
    sleep(0.1)
  end
  sleep(1)
  ename = "タコ三郎"
  mstatus[0] = 1000
  mstatus[1] = 700
  else
    #何もしない SKIP
  end
  
  while status[0] > 0
    sleep(1)
    print("\n")
    puts(bar)
    sleep(1)
    printf("\n %s のHP \e[1;33m%d\n\n",ename,mstatus[0])
    printf("\e[m\n")
    printf("%s  HP:\e[1;32m%d",name,status[0])
    printf("\e[m/%d",copyhp)
    printf("  ATK:%d  DEF:%d  MP:%d\n",status[1],status[2],status[3])
    puts("Actionを選択して下さい")
    print("1:攻撃  2:防御  3:回復  ")
    printf("回復使用可能まで%dターン\n",kaihuku)
    print("Action　")
    battle =  gets.chomp!.to_i
    puts(bar)
    print("\n")
    if battle == 1
      formula = status[1] + rand(range)
      mstatus[0] -= formula
      system 'animate -geometry 150x150 -geometry +450+300 dame.gif&'
      sleep(1)
      printf(" %sは%sに\e[1;31m%d",name,ename,formula)
      print("\e[mのダメージを与えた!\n")
      sleep(1)
      if mstatus[0] <= 0
        printf(" %sのHP \e[1;33m %d\n",ename,0)
        printf("\e[m\n")
        kaihuku -= 1
        sleep(1)
      elsif mstatus[0] > 0
        formula = mstatus[1] + rand(range)
        status[0] -= formula
        system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
        printf(" %sは%sから\e[1;31m%d",name,ename,formula)
        print("\e[mのダメージ受けた!\n")
        kaihuku -= 1
      end
    elsif battle == 2
      formula = mstatus[1] + rand(range)
      status[0] -= formula - status[2]
      if formula < status[2]
        status[0] -= (formula - status[2]) * -1
      end
      system 'animate -geometry 150x150 -geometry +450+300 def.gif&'
      sleep(1)
      printf(" %sは防御を選択!!\n",name)
      sleep(1)
      if formula < status[2]
        system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
        printf(" %sから\e[1;31m%d",ename,0)
        print("\e[mのダメージ受けた!\n")
      elsif formula >= status[2]
        system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
        printf(" %sから\e[1;31m%d",ename,formula - status[2])
        print("\e[mのダメージ受けた!\n")
      end
  
      kaihuku -= 1
  
    elsif battle == 3 && copyhp == status[0]
      sleep(1)
      puts("これ以上回復しないよ")
      redo
  
    elsif battle == 3 && kaihuku < 1
      formula = status[3] + rand(range)
      status[0] += formula
  
      if status[0] > copyhp #回復後のHPが初期値を超えたとき
        formula2 = status[0] - copyhp #初期値を超えてはみ出た部分
        formula = formula - formula2 #実際に回復した数値
        status[0] = status[0] - formula2
      end
      system 'animate -geometry 150x150 -geometry +450+300 mp.gif&'
      sleep(1)
      printf(" HPが\e[1;32m%d",formula)
      print("\e[m回復した!\n")
      sleep(1)
      printf(" %sのHP \e[1;32m%d\n",name,status[0])
      printf("\e[m\n")
      formula = mstatus[1] + rand(range)
      status[0] -= formula
      sleep(1)
      system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
      printf(" %sから\e[1;31m%d",ename,formula)
      print("\e[mのダメージ受けた!\n")
      kaihuku += 3
      
    elsif battle == 3 && kaihuku >= 1 
      sleep(1)
      print("まだ使えないよ\n")
      redo
    else
      sleep(1)
      print("入力エラー!行動を再選択して下さい\n")
      redo
    end
  
    if kaihuku  < 0
      kaihuku = 0
    end
  
    if status[0] <= 0
      sleep(1)
      printf(" %sのHP \e[1;32m%d\n",name,0)
      printf("\e[m\n\n")
      sleep(1)
      printf("%sはしにました!\n",name)
      system 'pkill animate -U `whoami`'
      break
    elsif mstatus[0] <= 0
      sleep(1)
      printf("%sを倒しました!\n\n\n\n",ename)
      sleep(1)
      system 'pkill animate -U `whoami`'
      break
    end
  end



#stage4
if status[0] > 0
  sleep(1)
  printf("stage4 木星\n")
  sleep(2)
  system 'animate -geometry 350x350 -geometry +150+50 wani.gif&'
  "ワニ次郎があらわれた!!".each_char do |char|
    printf(char)
    sleep(0.1)
  end
  sleep(1)
  ename = "ワニ次郎"
  mstatus[0] = 1200
  mstatus[1] = 700
  else
    #何もしない SKIP
  end
  
  while status[0] > 0
    sleep(1)
    print("\n")
    puts(bar)
    sleep(1)
    printf("\n %s のHP \e[1;33m%d\n\n",ename,mstatus[0])
    printf("\e[m\n")
    printf("%s  HP:\e[1;32m%d",name,status[0])
    printf("\e[m/%d",copyhp)
    printf("  ATK:%d  DEF:%d  MP:%d\n",status[1],status[2],status[3])
    puts("Actionを選択して下さい")
    print("1:攻撃  2:防御  3:回復  ")
    printf("回復使用可能まで%dターン\n",kaihuku)
    print("Action　")
    battle =  gets.chomp!.to_i
    puts(bar)
    print("\n")
    if battle == 1
      formula = status[1] + rand(range)
      mstatus[0] -= formula
      system 'animate -geometry 150x150 -geometry +450+300 dame.gif&'
      sleep(1)
      printf(" %sは%sに\e[1;31m%d",name,ename,formula)
      print("\e[mのダメージを与えた!\n")
      sleep(1)
      if mstatus[0] <= 0
        printf(" %sのHP \e[1;33m %d\n",ename,0)
        printf("\e[m\n")
        kaihuku -= 1
        sleep(1)
      elsif mstatus[0] > 0
        formula = mstatus[1] + rand(range)
        status[0] -= formula
        system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
        printf(" %sは%sから\e[1;31m%d",name,ename,formula)
        print("\e[mのダメージ受けた!\n")
        kaihuku -= 1
      end
    elsif battle == 2
      formula = mstatus[1] + rand(range)
      status[0] -= formula - status[2]
      if formula < status[2]
        status[0] -= (formula - status[2]) * -1
      end
      system 'animate -geometry 150x150 -geometry +450+300 def.gif&'
      sleep(1)
      printf(" %sは防御を選択!!\n",name)
      sleep(1)
      if formula < status[2]
        system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
        printf(" %sから\e[1;31m%d",ename,0)
        print("\e[mのダメージ受けた!\n")
      elsif formula >= status[2]
        system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
        printf(" %sから\e[1;31m%d",ename,formula - status[2])
        print("\e[mのダメージ受けた!\n")
      end
  
      kaihuku -= 1
  
    elsif battle == 3 && copyhp == status[0]
      sleep(1)
      puts("これ以上回復しないよ")
      redo
  
    elsif battle == 3 && kaihuku < 1
      formula = status[3] + rand(range)
      status[0] += formula
  
      if status[0] > copyhp #回復後のHPが初期値を超えたとき
        formula2 = status[0] - copyhp #初期値を超えてはみ出た部分
        formula = formula - formula2 #実際に回復した数値
        status[0] = status[0] - formula2
      end
      system 'animate -geometry 150x150 -geometry +450+300 mp.gif&'
      sleep(1)
      printf(" HPが\e[1;32m%d",formula)
      print("\e[m回復した!\n")
      sleep(1)
      printf(" %sのHP \e[1;32m%d\n",name,status[0])
      printf("\e[m\n")
      formula = mstatus[1] + rand(range)
      status[0] -= formula
      sleep(1)
      system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
      printf(" %sから\e[1;31m%d",ename,formula)
      print("\e[mのダメージ受けた!\n")
      kaihuku += 3
      
    elsif battle == 3 && kaihuku >= 1 
      sleep(1)
      print("まだ使えないよ\n")
      redo
    else
      sleep(1)
      print("入力エラー!行動を再選択して下さい\n")
      redo
    end
  
    if kaihuku  < 0
      kaihuku = 0
    end
  
    if status[0] <= 0
      sleep(1)
      printf(" %sのHP \e[1;32m%d\n",name,0)
      printf("\e[m\n\n")
      sleep(1)
      printf("%sはしにました!\n",name)
      system 'pkill animate -U `whoami`'
      break
    elsif mstatus[0] <= 0
      sleep(1)
      printf("%sを倒しました!\n\n\n\n",ename)
      sleep(1)
      system 'pkill animate -U `whoami`'
      break
    end
  end



#stage5
if status[0] > 0
  sleep(1)
  printf("stage5 金星\n")
  sleep(2)
  system 'animate -geometry 350x350 -geometry +150+50 kaba.gif&'
  "カバ太郎があらわれた!!".each_char do |char|
    printf(char)
    sleep(0.1)
  end
  sleep(1)
  ename = "カバ太郎"
  mstatus[0] = 1500
  mstatus[1] = 800
  else
    #何もしない SKIP
  end
  
  while status[0] > 0
    sleep(1)
    print("\n")
    puts(bar)
    sleep(1)
    printf("\n %s のHP \e[1;33m%d\n\n",ename,mstatus[0])
    printf("\e[m\n")
    printf("%s  HP:\e[1;32m%d",name,status[0])
    printf("\e[m/%d",copyhp)
    printf("  ATK:%d  DEF:%d  MP:%d\n",status[1],status[2],status[3])
    puts("Actionを選択して下さい")
    print("1:攻撃  2:防御  3:回復  ")
    printf("回復使用可能まで%dターン\n",kaihuku)
    print("Action　")
    battle =  gets.chomp!.to_i
    puts(bar)
    print("\n")
    if battle == 1
      formula = status[1] + rand(range)
      mstatus[0] -= formula
      system 'animate -geometry 150x150 -geometry +450+300 dame.gif&'
      sleep(1)
      printf(" %sは%sに\e[1;31m%d",name,ename,formula)
      print("\e[mのダメージを与えた!\n")
      sleep(1)
      if mstatus[0] <= 0
        printf(" %sのHP \e[1;33m %d\n",ename,0)
        printf("\e[m\n")
        kaihuku -= 1
        sleep(1)
      elsif mstatus[0] > 0
        formula = mstatus[1] + rand(range)
        status[0] -= formula
        system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
        printf(" %sは%sから\e[1;31m%d",name,ename,formula)
        print("\e[mのダメージ受けた!\n")
        kaihuku -= 1
      end
    elsif battle == 2
      formula = mstatus[1] + rand(range)
      status[0] -= formula - status[2]
      if formula < status[2]
        status[0] -= (formula - status[2]) * -1
      end
      system 'animate -geometry 150x150 -geometry +450+300 def.gif&'
      sleep(1)
      printf(" %sは防御を選択!!\n",name)
      sleep(1)
      if formula < status[2]
        system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
        printf(" %sから\e[1;31m%d",ename,0)
        print("\e[mのダメージ受けた!\n")
      elsif formula >= status[2]
        system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
        printf(" %sから\e[1;31m%d",ename,formula - status[2])
        print("\e[mのダメージ受けた!\n")
      end
  
      kaihuku -= 1
  
    elsif battle == 3 && copyhp == status[0]
      sleep(1)
      puts("これ以上回復しないよ")
      redo
  
    elsif battle == 3 && kaihuku < 1
      formula = status[3] + rand(range)
      status[0] += formula
  
      if status[0] > copyhp #回復後のHPが初期値を超えたとき
        formula2 = status[0] - copyhp #初期値を超えてはみ出た部分
        formula = formula - formula2 #実際に回復した数値
        status[0] = status[0] - formula2
      end
      system 'animate -geometry 150x150 -geometry +450+300 mp.gif&'
      sleep(1)
      printf(" HPが\e[1;32m%d",formula)
      print("\e[m回復した!\n")
      sleep(1)
      printf(" %sのHP \e[1;32m%d\n",name,status[0])
      printf("\e[m\n")
      formula = mstatus[1] + rand(range)
      status[0] -= formula
      sleep(1)
      system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
      printf(" %sから\e[1;31m%d",ename,formula)
      print("\e[mのダメージ受けた!\n")
      kaihuku += 3
      
    elsif battle == 3 && kaihuku >= 1 
      sleep(1)
      print("まだ使えないよ\n")
      redo
    else
      sleep(1)
      print("入力エラー!行動を再選択して下さい\n")
      redo
    end
  
    if kaihuku  < 0
      kaihuku = 0
    end
  
    if status[0] <= 0
      sleep(1)
      printf(" %sのHP \e[1;32m%d\n",name,0)
      printf("\e[m\n\n")
      sleep(1)
      printf("%sはしにました!\n",name)
      system 'pkill animate -U `whoami`'
      break
    elsif mstatus[0] <= 0
      sleep(1)
      printf("%sを倒しました!\n\n\n\n",ename)
      sleep(1)
      system 'pkill animate -U `whoami`'
      break
    end
  end



#stage6
if status[0] > 0
  sleep(1)
  printf("\e[1;31mFinal stage  太陽\e[m\n")
  sleep(2)
  system 'animate -delay 150 -geometry 420x420 -geometry +110+50 kujira.gif&'
  "パパクジラがあらわれた!!".each_char do |char|
    printf(char)
    sleep(0.2)
  end
  sleep(1)
  ename = "パパクジラ"
  mstatus[0] = 2300
  mstatus[1] = 1000
  else
    #何もしない SKIP
  end
  
  while status[0] > 0
    sleep(1)
    print("\n")
    puts(bar)
    sleep(1)
    printf("\n %s のHP \e[1;33m%d\n\n",ename,mstatus[0])
    printf("\e[m\n")
    printf("%s  HP:\e[1;32m%d",name,status[0])
    printf("\e[m/%d",copyhp)
    printf("  ATK:%d  DEF:%d  MP:%d\n",status[1],status[2],status[3])
    puts("Actionを選択して下さい")
    print("1:攻撃  2:防御  3:回復  ")
    printf("回復使用可能まで%dターン\n",kaihuku)
    print("Action　")
    battle =  gets.chomp!.to_i
    puts(bar)
    print("\n")
    if battle == 1
      formula = status[1] + rand(range)
      mstatus[0] -= formula
      system 'animate -geometry 150x150 -geometry +450+300 dame.gif&'
      sleep(1)
      printf(" %sは%sに\e[1;31m%d",name,ename,formula)
      print("\e[mのダメージを与えた!\n")
      sleep(1)
      if mstatus[0] <= 0
        printf(" %sのHP \e[1;33m %d\n",ename,0)
        printf("\e[m\n")
        kaihuku -= 1
        sleep(1)
      elsif mstatus[0] > 0
        formula = mstatus[1] + rand(range)
        status[0] -= formula
        system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
        printf(" %sは%sから\e[1;31m%d",name,ename,formula)
        print("\e[mのダメージ受けた!\n")
        kaihuku -= 1
      end
    elsif battle == 2
      formula = mstatus[1] + rand(range)
      status[0] -= formula - status[2]
      if formula < status[2]
        status[0] -= (formula - status[2]) * -1
      end
      system 'animate -geometry 150x150 -geometry +450+300 def.gif&'
      sleep(1)
      printf(" %sは防御を選択!!\n",name)
      sleep(1)
      if formula < status[2]
        system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
        printf(" %sから\e[1;31m%d",ename,0)
        print("\e[mのダメージ受けた!\n")
      elsif formula >= status[2]
        system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
        printf(" %sから\e[1;31m%d",ename,formula - status[2])
        print("\e[mのダメージ受けた!\n")
      end
  
      kaihuku -= 1
  
    elsif battle == 3 && copyhp == status[0]
      sleep(1)
      puts("これ以上回復しないよ")
      redo
  
    elsif battle == 3 && kaihuku < 1
      formula = status[3] + rand(range)
      status[0] += formula
  
      if status[0] > copyhp #回復後のHPが初期値を超えたとき
        formula2 = status[0] - copyhp #初期値を超えてはみ出た部分
        formula = formula - formula2 #実際に回復した数値
        status[0] = status[0] - formula2
      end
      system 'animate -geometry 150x150 -geometry +450+300 mp.gif&'
      sleep(1)
      printf(" HPが\e[1;32m%d",formula)
      print("\e[m回復した!\n")
      sleep(1)
      printf(" %sのHP \e[1;32m%d\n",name,status[0])
      printf("\e[m\n")
      formula = mstatus[1] + rand(range)
      status[0] -= formula
      sleep(1)
      system 'animate -geometry 150x150 -geometry +600+350 mdame.gif&'
      printf(" %sから\e[1;31m%d",ename,formula)
      print("\e[mのダメージ受けた!\n")
      kaihuku += 3
      
    elsif battle == 3 && kaihuku >= 1 
      sleep(1)
      print("まだ使えないよ\n")
      redo
    else
      sleep(1)
      print("入力エラー!行動を再選択して下さい\n")
      redo
    end
  
    if kaihuku  < 0
      kaihuku = 0
    end
  
    if status[0] <= 0
      sleep(1)
      printf(" %sのHP \e[1;32m%d\n",name,0)
      printf("\e[m\n\n")
      sleep(1)
      printf("%sはしにました!\n",name)
      system 'pkill animate -U `whoami`'
      break
    elsif mstatus[0] <= 0
      sleep(1)
      printf("%sを倒しました!\n\n\n",ename)
      sleep(1)
      system 'pkill animate -U `whoami`'
      break
    end
  end





#エンディング
if status[0] > 0 && status[1] > 0
  #puts("you win!!")
  system 'pkill display -U `whoami`'
  system 'banner GAME CLEAR!!'
  sleep(2)
  "\nあなたの活躍で再び宇宙に平和が訪れました！\n".each_char do |char|
    printf(char)
    sleep(0.1)
  end
  sleep(1)
  "めでたしめでたし...\n\n".each_char do |char|
    printf(char)
    sleep(0.2)
  end
  sleep(2)
  printf("%sの冒険はこれでおしまいです。\n",name)
  puts("最後まで遊んでいただきありがとうございました！")
elsif status[0] <= 0 && status[1] > 0
  puts("\nyou lose!!")
  system 'pkill display -U `whoami`'
  sleep(1)
  "また挑戦してね！\n".each_char do |char|
    printf(char)
    sleep(0.1)
  end
else
  puts("space.rb を実行した後に space2.rb を実行してください")
end
