diff --git a/akumazzz.rb b/akumazzz.rb
new file mode 100644
index 0000000..4fd2500
--- /dev/null
+++ b/akumazzz.rb
@@ -0,0 +1,236 @@
+#!/usr/bin/env ruby
+# -*- coding: utf-8 -*-
+
+require 'cgi'
+c = CGI.new(:accept_charset => "UTF-8")
+print "Content-type: text/html; charset=UTF-8\n\n"
+
+#
+
+
+nendo=c["nendo"]
+gakkou=c["gakkou"]
+gakunen=c["gakunen"]
+kurasu=c["kurasu"]
+han=c["han"]
+i=c["i"].to_i
+name=c["name"]
+var1=c["tenshi"]
+var2=c["go"]
+time=c["time"]
+
+open("tenshi.csv","a:utf-8") do |tenshi|
+ tenshi.printf("%d,%s,%s,%s,%d,%s,%d,%d,%d,%d\n",time,name,var1,var2,nendo,gakkou,gakunen,kurasu,han,i)
+end
+
+
+i==0
+
+
+kekka=Hash.new
+
+require'csv'
+date=CSV.read("tenshi.csv", :headers=>false, encoding: 'utf-8')
+date.each do |row|
+ if row[4]==nendo&&row[5]==gakkou&&row[6]==gakunen&&row[7]==kurasu&&row[8]==han
+ if kekka.key?(row[1]) == false #その人のデータがまだ代入されていなければ
+ kekka[row[1]]=Array.new #valueを配列にする
+ end
+ kekka[row[1]]<<[row[0],row[9],row[2],row[3]] #<<で配列の末尾に右辺を追加
+ i+=1
+ end
+end
+
+p kekka
+
+a=0
+zahyo=[]
+
+for hoge,akumado in kekka
+a+=1
+ p a
+ for result in akumado
+ if result[1] == "1"
+ case1 = result
+ zahyo[a]=[hoge,case1[2].to_i]
+ elsif result[1] == "2"
+ case2 = result
+ zahyo[a] << case2[2].to_i
+ elsif result[1] == "3"
+ case3 = result
+ zahyo[a] << case3[2].to_i
+ end
+ end
+ printf("
%sさんの結果 1回目:悪魔・天使度 %d GO&STOP %s
\n",hoge,case1[2],case1[3])
+ printf("%sさんの結果 2回目:悪魔・天使度 %d GO&STOP %s
\n",hoge,case2[2],case2[3])
+ printf("%sさんの結果 3回目:悪魔・天使度 %d GO&STOP %s
\n",hoge,case3[2],case3[3])
+end
+
+
+if a==1
+ zishaku1="zishaku.red.png"
+
+elsif a==2
+ zishaku1="zishaku.red.png"
+ zishaku2="zishaku.blue.png"
+
+elsif a==3
+ zishaku1="zishaku.red.png"
+ zishaku2="zishaku.blue.png"
+ zishaku3="zishaku.green.png"
+
+elsif a==4
+ zishaku1="zishaku.red.png"
+ zishaku2="zishaku.blue.png"
+ zishaku3="zishaku.green.png"
+ zishaku4="zishaku.purple.png"
+
+elsif a==5
+ zishaku1="zishaku.red.png"
+ zishaku2="zishaku.blue.png"
+ zishaku3="zishaku.green.png"
+ zishaku4="zishaku.purple.png"
+ zishaku5="zishaku.lightblue.png"
+
+elsif a==6
+ zishaku1="zishaku.red.png"
+ zishaku2="zishaku.blue.png"
+ zishaku3="zishaku.green.png"
+ zishaku4="zishaku.purple.png"
+ zishaku5="zishaku.lightblue.png"
+ zishaku6="zishak.yello.png"
+
+end
+
+
+print"\n"
+
+print"
1
\n"
+print"
2
\n"
+print"
3
\n"
+print"
4
\n"
+print"
5
\n"
+print"
6
\n"
+print"
7
\n"
+print"
8
\n"
+print"
9
\n"
+
+print"
\n"
+
+print"\n"
+
+print"
1
\n"
+print"
2
\n"
+print"
3
\n"
+print"
4
\n"
+print"
5
\n"
+print"
6
\n"
+print"
7
\n"
+print"
8
\n"
+print"
9
\n"
+
+print"
\n"
+
+print"\n"
+
+print"
1
\n"
+print"
2
\n"
+print"
3
\n"
+print"
4
\n"
+print"
5
\n"
+print"
6
\n"
+print"
7
\n"
+print"
8
\n"
+print"
9
\n"
+
+print"
\n"
+
+p zahyo
+
+zishaku_y = [0,25,80,135,190,245,300,355,410,465]
+zishaku_x = [0,50,75,100,125,150,175]
+
+p zishaku_x[zahyo[1][1]]
+p zishaku_y[zahyo[1][1]]
+
+
+print"結果\n"
+print"\n"
+
+print"\n"
+
+print"#{han}班の結果
\n"
+
+
+
+
+
+
+
+print"\n"
+print"\n"
diff --git a/zzzz.rb b/zzzz.rb
new file mode 100755
index 0000000..87b4c81
--- /dev/null
+++ b/zzzz.rb
@@ -0,0 +1,1104 @@
+#!/usr/bin/env ruby
+# -*- coding: utf-8 -*-
+
+require 'csv'
+
+class RPG
+ def initialize
+ @@story = {"ゲーム説明" => ["ゲーム説明","このゲームはメニューで行動を選択して遊びます",
+ "ステータスを見る・宿屋へ行く・武器屋へ行く・教会へ行く・探索へ行くの中から好きなのを選びます",
+ "ステータスを見るは今の自分のステータスを見ることができます",
+ "HP=体力 MP=魔力・魔法防御力 ATS=攻撃力 MAT=魔法攻撃力 DEF=防御力 DEX=素早さ AGI=器用さ LUK=運",
+ "宿屋はGを支払うとHP・MPが回復します",
+ "武器屋は武器・防具を購入することができます",
+ "教会はセーブをすることができます",
+ "探索は魔物の生息地に行き 戦いをします",
+ "戦いは行動を選択して魔物を倒します",
+ "死んでしまったら'GAMEOVER'でGを失い村・街からやり直しです",
+ "目標は魔王を倒すこと!",
+ "じゃぁクリア目指して頑張ってね",
+ "※このゲームは共同制作作品です"],
+
+ "クレジットタイトル" => ["クレジットタイトル(スタッフロール)","システム","村井侑平 澤田羽衣",
+ "システムアドバイザー","佐藤隆之助 阿部光峻",
+ "広瀬雄二様 東北公益文科大学の皆様",
+ "シナリオ","村井侑平 高橋真翔 佐藤風斗 佐藤然",
+ "シナリオアドバイザー","佐藤隆之助 澤田羽衣 疋田琉莉 阿部光峻",
+ "グラフィック","村井侑平",
+ "この作品に関わった すべての方に感謝の意を申し上げます",
+ "制作","「#みんなでゲームを作ろう」の会"],
+
+ "目覚め" => ["\e[96m_me_:う、うっ",
+ "\e[96;2m(強い頭痛を感じ_jibun_は意識を失った)",
+ "\e[96;2m(目覚めると そこは見知らぬ村だった)",
+ "\e[96m_me_:こ、ここは どこ?",
+ "\e[96;2m(その瞬間すべてを思い出した)",
+ "\e[96;2m(剣術や魔法 世界のことわり)",
+ "\e[96;2m(そして魔王を倒さなければ ならないという強い使命感を覚えた)",
+ "\e[96m_me_:魔王を倒さなければ",
+ "\e[96m_me_:なぜだか わからないけど そんな気がする",
+ "\e[96m_me_:あっ そして ここは どこなんだろう",
+ "\e[96,2m(近くの村人らしき男の人に声をかけた)",
+ "\e[96m_me_:すみません ここが どこか わかりますか",
+ "\e[2m村人:何いってるんだい?",
+ "\e[2m村人:ここは「パクス村」ディーヴァス川のほとりにある小さな農村さ",
+ "\e[2m村人:ここが初めてなら注意しておくけど「ポルタ平原」には魔物が出るから用意なしには行くなよ",
+ "\e[2m村人:最近プリーンビーストロードってのが現れて魔物が増えたんだけどな",
+ "\e[2m村人:森にも近づけなくて困ってるんだよ",
+ "\e[2m村人:まぁ旅 人なら宿屋で休んでいきな",
+ "\e[96m_me_:あっ _jibun_ お金持ってないんですけど",
+ "\e[2m村人:なんだお前さん一文無しかよ",
+ "\e[2m村人:しかたねーなー ここで会ったのも何かの縁だ",
+ "\e[2m村人:30Gやるから あとは魔物でも倒して自分で稼げ",
+ "(_me_は村人から30Gをもらった)",
+ "\e[2m村人:じゃぁな",
+ "\e[96,2m(_me_:とりあえずポルタ平原を探索しようかな)"],
+
+ "プリーンビーストロード戦闘前" => ["\e96m_me_:うわっ",
+ "\e[96,2m(_jibun_の2倍ほどの四足歩行の巨体が姿を現した)",
+ "\e[91mプリーンビーストロード:@※ ※※ &※ &@ ×@ @& @%゛$$ ¥※ ※※ #%",
+ "\e[91mプリーンビーストロード:×% △& @%゛□$ △$ $% %$"],
+
+ "プリーンビーストロード勝利後" => ["\e[96m_me_:今のが\e[91mプリーンビーストロード\e[96mかな",
+ "\e[96m_me_:死ぬかと思った...",
+ "\e[96m_me_:この辺りで できることは もうあんまりないし",
+ "\e[96m_me_:最寄りの町に移動しようかな",
+ "(パクス村を出てしばらくして)",
+ "\e[96m_me_:あっ 村だ",
+ "\e[96,2m(近くに見えた村人らしき女の人に声をかけた)",
+ "\e[96m_me_:すみません 最寄りの町への道を教えてほしいんですが",
+ "\e[2m村人:ここから一番近いのは北東に行った先の鉱山都市〇〇だよ",
+ "\e[2m村人:でも強力な魔物が住み着いちまったみたいで 道中は危険だよ",
+ "\e[2m村人:かと言って他の町は馬車で一月かかるんだよな",
+ "\e[2m村人:魔物が住んじまったせいで踏んだり蹴ったりだよ",
+ "\e[2m村人:しばらく居るつもりなら歓迎するよ",
+ "\e[2m村人:ここは〇〇村 森の中の小さな農村だよ",
+ "(そう言って村人は去っていった)",
+ "\e[96,2m(_me_:町に行くためには無理にでも森を抜けないとな)"]
+ }
+
+ x = ["たいあたり"],["たいあたり"]*2+["突進"],["突進"],["魔法:闇の刃"],["たいあたり"]*2+["突進"],["魔法:飛礫"]*3+["たいあたり"]+["突進"]*7,["ヒール"]+["たいあたり"]*2,["パンチ"]*3,["魔法:リーフカッター"],["パンチ"]*13+["魔法:リーフカッター"]*6+["回復:ヒール"]
+ e = CSV.read("enemy.csv",:headers => true,:converters => :numeric)
+ for i in e["name"]
+ i.gsub!("|","\e")
+ end
+ n = e["name"]
+ hP = e["HP"]
+ mP = e["MP"]
+ aTS = e["ATS"]
+ mAT = e["MAT"]
+ dEF = e["DEF"]
+ mDF = e["MDF"]
+ dEX = e["DEX"]
+ aGI = e["AGI"]
+ lUK = e["LUK"]
+ g = e["G"]
+ eXP = e["EXP"]
+ eturan = e["閲覧必要レベル"]
+
+ @@enemy = {"name" => n,
+ "HP" => hP,
+ "MAXHP" => hP,
+ "MP" => mP,
+ "MAXMP" => mP,
+ "ATS" => aTS,
+ "MAT" => mAT,
+ "DEF" => dEF,
+ "MDF" => mDF,
+ "DEX" => dEX,
+ "AGI" => aGI,
+ "LUK" => lUK,
+ "G" => g,
+ "EXP" => eXP,
+ "閲覧必要レベル" => eturan
+ }
+
+ @@enemy["攻撃"] = x
+ @@enemy["エンカウント数"] = [0]*@@enemy["name"].length
+ @@enemy["勝利数"] = [0]*@@enemy["name"].length
+ @@enemy["敗北数"] = [0]*@@enemy["name"].length
+
+ @@probability = [0]*99 + [4],[0]*67 + [2]*30 + [4]*3,[0]*45 + [2]*40 + [3]*20 + [4]*5,[0]*7 + [2]*65 + [3]*20 + [4]*8
+
+ @@choices = {"プレイetc" => ["はじめから","つづきから","ゲーム説明","クレジットタイトル"],
+ "ロード" => ["ロードする","タイトルに戻る"],
+ "役職" => ["剣士","魔法使い"],
+ "性別" => ["男","女"],
+ "一人称" => ["俺","僕","私"],
+ "メニュー" => ["ステータスを見る","アイテムを見る","装備を見る","宿屋に行く","武器屋に行く","アイテムショップに行く","教会に行く","探索に行く","Command"],
+ "使うor使わない" => ["使う","使わない"],
+ "宿屋" => ["泊まる10G","泊まらない"],
+ "教会" => ["祈りを捧げる[セーブ]"],
+ "バトル" => ["攻撃","アイテム","逃げる"],
+ "進むor戻る" => ["深部に進む","拠点に戻る"],
+ "ステータスチェック" => ["ステータス省略表示","スキル表示","全ステータスの表示"]
+ }
+
+ @item = []
+
+ @@itemlist = []
+
+ @area = ["エリア1:ポルタ平原"]
+
+ @attack = ["剣技:スラッシュ"]
+ @support_skill = []
+ @special_skill = ["叡智"]
+
+ @@attack_list = {"剣技:スラッシュ" => [1,0,3,0],"たいあたり" => [2,1,1,0],"突進" => [3,1,0,0],
+ "魔法:闇の刃" => [3,0,2,0,0],"魔法:飛礫" => [3,0,3,2,1],
+ "魔法:マジックミサイル" => [1,0,1,0,1],"パンチ" => [1,1,2,3],
+ "剣技:疾風斬り" => [2,0,2,1],"魔法:ファイアーボール" => [3,0,3,0,0],
+ "回復:ヒール" => [5,5],"魔法:リーフカッター" => [3,0,3,1,0],
+ "Command:何もしない" => nil,
+ "回復Command:Soul Regeneration" => [10000,0],
+ "攻撃Command:Delete Life" => [10000,0,10000,10000] #<=管理者特権
+ }
+
+ @@support_skill_list = {"HP自動回復・極" => [0,50,0],
+ "MP自動回復・極" => [0,0,80],
+ "剣術の極み" => [],
+ "魔導の極み" => [],
+
+ #いつか作りたい七つの大罪&七つの美徳シリーズ
+ "傲慢" => [], #全ステータスアップ?
+ "憤怒" => [], #数ターンATS&DEX超アップその他低下?
+ "嫉妬" => [], #相手のLvに応じてステータスアップ?
+ "怠惰" => [], #相手の攻撃命中率&防御力低下?
+ "強欲" => [], #お金アップ?
+ "暴食" => [], #アイテムによるステータスアップの効果アップ?
+ "色欲" => [], #敵方への異常状態絶対成功?
+ "謙譲" => [], #相手のステータス低下?
+ "慈悲" => [], #死亡時のペナルティの軽減?
+ "忍耐" => [], #死んでも耐える的な?
+ "勤勉" => [], #経験値アップ?
+ "救恤" => [], #回復技の効果アップ?
+ "節制" => [], #命中率アップ?
+ "純潔" => [], #状態異常無効?
+
+ "禁忌" => [] #未定?
+ }
+
+ @@special_skill_list = ["叡智",
+ "鑑定Lv.1","鑑定Lv.2","鑑定Lv.3","鑑定Lv.4","鑑定Lv.5",
+ "鑑定Lv.6","鑑定Lv.7","鑑定Lv.8","鑑定Lv.9","鑑定Lv.10" #モンスター図鑑が見れる?
+ ]
+
+ @@title_list = {"七つの大罪を犯すもの" => [],
+ "七つの美徳を守るもの" => [],
+ "叡智なるもの" => [],
+ "大迷宮の踏破者" => [],
+ "迷宮の踏破者" => [],
+ "スライムハンター" => [],
+ "草原の覇者" => [],
+ "森の覇者" => [],
+ "洞窟の覇者" => [],
+ "海の覇者" => [],
+ "火山の覇者" => [],
+ "到達点に達するもの" => [],
+ "禁忌なるもの" => [],
+ "大富豪" => [],
+ "魔物の天敵" => [],
+ "魔導神" => [],
+ "剣神" => [],
+ "勇者たるもの" => [],
+ "宿のお得意さん" => []
+
+ }
+
+ @@unique_skill_list = ["鑑定Lv.1","鑑定Lv.2","鑑定Lv.3","鑑定Lv.4","鑑定Lv.5","鑑定Lv.6","鑑定Lv.7","鑑定Lv.8","鑑定Lv.9","鑑定Lv.10"]
+
+ @@ultimate_skill_list = ["叡智","傲慢","憤怒","嫉妬","怠惰","強欲","暴食","色欲","謙譲","慈悲","忍耐","勤勉","救恤","節制" ,"純潔","禁忌"]
+
+
+
+ @@skill = CSV.read("skill.csv",:headers => true)
+ @attack_ckeck = [0,0,-1,-1]
+
+ @@shop_list = ["薬草",5,0],["傷薬",10,1],["マジックポーション",20,2],["MPポーション",20,2]
+ @@item_list = {"薬草" => [5,0],
+ "傷薬" => [10,0],
+ "マジックポーション" => [15,5],
+ "MPポーション" => [0,20]}
+ @sobi = [0,0]
+ @@sobi_list = {"武器:木刀" => [],"防具:木製の防具" => []}
+
+ @@key = ["name","性別","一人称","Lv","EXP","処理用EXP","前回のLvUP必要EXP","G","HP","MAXHP","MP","MAXMP","ATS","MAT","DEF","DEX","AGI","LUK","バトル数","勝利数","敗北数","逃走数"]
+
+ end
+
+ def question(choices,mold)
+ kaisu = 0
+ select = -1
+ if mold == "hyozi"
+ while kaisu < choices.length
+ printf("%s ",choices[kaisu])
+ print("\e[m")
+ kaisu += 1
+ end
+ else
+ while kaisu < choices.length
+ printf("%s(%d) ",choices[kaisu],kaisu)
+ print("\e[m")
+ kaisu += 1
+ end
+ end
+ print("\n")
+ while select < 0 || select >= choices.length #回答の仕分け
+ print("選択:")
+ select = gets.chomp
+ if select == "" || check(select) == false
+ redo
+ end
+ select = select.to_i
+ end
+ if mold == "moji"
+ @select = choices[select]
+ return choices[select]
+ elsif mold == "suji"
+ @select = select
+ return select
+ else
+ puts"questionメソッドでスペルミスしてるようだ"
+ end
+ end
+
+ def talk(story,mold = "置き換え")
+ print("\n")
+ if not story == "なし"
+ if mold == "置き換え"
+ for i in @@story[story]
+ puts(i.gsub("_me_",@status["name"])
+ .gsub("_jibun_",@status["一人称"])
+ .gsub("_seibetu_",@status["性別"])
+ )
+ print("\e[m")
+ gets
+ end
+ elsif mold == "読み上げ"
+ for i in @@story[story]
+ puts i
+ print("\e[m")
+ gets
+ end
+ end
+ end
+ end
+
+ def check(h)
+ number = ["1","2","3","4","5","6","6","7","8","9","0"]
+ x = h.split("")
+ n = 0
+ for i in x
+ if false == number.include?(x[n])
+ return false
+ end
+ n += 1
+ end
+ return true
+ end
+
+
+ def first
+ while true
+ question(@@choices["プレイetc"],"moji")
+ if @select == "はじめから"
+ print("\n")
+ puts("初期設定"+"="*42)
+ print("\n")
+ puts("役職は何にしますか?")
+ puts("PLの名前を決めてください")
+ name = ""
+ while name == ""
+ print("name…")
+ name = gets.chomp
+ @status = {"Lv" => 1,
+ "EXP" => 0,
+ "処理用EXP" => 0,
+ "LvUP必要EXP" => 8,
+ "前回のLvUP必要EXP" => 0,
+ "G" => 30,
+ "HP" => 20,
+ "MP" => 3,
+ "ATS" => 8,
+ "MAT" => 5,
+ "DEF" => 5,
+ "MDF" => 3,
+ "DEX" => 20,
+ "AGI" => 15,
+ "LUK" => 1
+ }
+ end
+ @status["name"] = name
+ @status["バトル数"] = 0
+ @status["勝利数"] = 0
+ @status["敗北数"] = 0
+ @status["逃走数"] = 0
+ @status["MAXHP"] = @status["HP"]
+ @status["MAXMP"] = @status["MP"]
+ print("\n")
+ puts("役職を決めてください")
+ @status["役職"] = question(@@choices["役職"],"moji")
+ print("\n")
+ puts("性別を決めてください")
+ @status["性別"] = question(@@choices["性別"],"moji")
+ print("\n")
+ puts("一人称を決めてください")
+ @status["一人称"] = question(@@choices["一人称"],"moji")
+ talk("目覚め")
+ menu
+
+ elsif @select == "つづきから"
+ redo
+ puts("セーブデータが ない場合はプログラムが強制終了されますが よろしいですか")
+ question(@@choices["ロード"],"moji")
+ if @select == "タイトルに戻る"
+ redo
+ end
+ data = CSV.read("RPG.csv")
+ @status = data["ステータス"]
+ @item = data["アイテム"]
+ menu
+ elsif @select == "ゲーム説明"
+ talk("ゲーム説明","読み上げ")
+
+ elsif @select == "クレジットタイトル"
+ talk("クレジットタイトル","読み上げ")
+
+ end
+ end
+ end
+
+ def display(mold = "PL")
+ if mold == "PL"
+ print("\n")
+ puts("="*50)
+ printf("name:%s 役職:%s Lv.%d EXP:%d %dG\n",@status["name"],@status["役職"],@status["Lv"],@status["EXP"],@status["G"])
+ printf("HP:%d/%d MP:%d/%d\n",@status["HP"],@status["MAXHP"],@status["MP"],@status["MAXMP"])
+ printf("ATS:%d MAT:%d DEF:%d MDF:%d DEX:%d AGI:%d LUK:%d\n",@status["ATS"],@status["MAT"],@status["DEF"],@status["MDF"],@status["DEX"],@status["AGI"],@status["LUK"])
+ puts("="*50)
+ print("\n")
+ elsif mold == "敵"
+ x = @special_skill.grep(/鑑定..../)
+ y = @special_skill.include?("叡智")
+ if x == [] && y == false
+ return
+ end
+ if y
+ print("\n")
+ puts("="*50)
+ printf("種族:%s\n",@@enemy["name"][@teki])
+ printf("HP:%d/%d MP:%d/%d\n",@@enemy["HP"][@teki],@@enemy["MAXHP"][@teki],@@enemy["MP"][@teki],@@enemy["MAXMP"][@teki])
+ printf("ATS:%d MAT:%d DEF:%d MDF:%d DEX:%d AGI:%d LUK:%d\n",@@enemy["ATS"][@teki],@@enemy["MAT"][@teki],@@enemy["DEF"][@teki],@@enemy["MDF"][@teki],@@enemy["DEX"][@teki],@@enemy["AGI"][@teki],@@enemy["LUK"][@teki])
+ puts("="*50)
+ print("\n")
+ return
+ end
+ x = x[5..].to_i
+ if x > @@enemy["閲覧必要レベル"][@teki]
+ print("\n")
+ puts("="*50)
+ printf("種族:%s\n",@@enemy["name"][@teki])
+ printf("HP:%d/%d MP:%d/%d\n",@@enemy["HP"][@teki],@@enemy["MAXHP"][@teki],@@enemy["MP"][@teki],@@enemy["MAXMP"][@teki])
+ printf("ATS:%d MAT:%d DEF:%d MDF:%d DEX:%d AGI:%d LUK:%d\n",@@enemy["ATS"][@teki],@@enemy["MAT"][@teki],@@enemy["DEF"][@teki],@@enemy["MDF"][@teki],@@enemy["DEX"][@teki],@@enemy["AGI"][@teki],@@enemy["LUK"][@teki])
+ puts("="*50)
+ print("\n")
+ elsif x >= @@enemy["閲覧必要レベル"][@teki]
+ else
+ print("\n")
+ puts("="*50)
+ puts("鑑定不能")
+ puts("="*50)
+ print("\n")
+ end
+ elsif mold == "詳細"
+ question(@@choices["ステータスチェック"],"moji")
+ if @select == "ステータス省略表示"
+ print("\n")
+ puts("="*50)
+ printf("name:%s 役職:%s Lv.%d EXP:%d %dG\n",@status["name"],@status["役職"],@status["Lv"],@status["EXP"],@status["G"])
+ printf("HP:%d/%d MP:%d/%d\n",@status["HP"],@status["MAXHP"],@status["MP"],@status["MAXMP"])
+ printf("ATS:%d MAT:%d DEF:%d MDF:%d DEX:%d AGI:%d LUK:%d\n",@status["ATS"],@status["MAT"],@status["DEF"],@status["MDF"],@status["DEX"],@status["AGI"],@status["LUK"])
+ puts("="*50)
+ print("\n")
+ elsif @select == "スキル表示"
+ x = 0
+ for i in @attack
+ x += 1
+ print i
+ if x == 10
+ print("\n")
+ x = 0
+ end
+ end
+ if not x == 0
+ print("\n")
+ end
+ x = 0
+ for i in @support_skill
+ x += 1
+ print i
+ if x == 10
+ print("\n")
+ x = 0
+ end
+ end
+ if not x == 0
+ print("\n")
+ end
+ x = 0
+ for i in @special_skill
+ x += 1
+ print i
+ if x == 10
+ print("\n")
+ x = 0
+ end
+ end
+ if not x == 0
+ print("\n")
+ end
+ x = 0
+
+ elsif @select == "全ステータス表示"
+
+ end
+ end
+ end
+ #print("\n")
+ #puts("="*50)
+
+ #puts("="*50)
+ #print("\n")
+
+ def item
+ print("\n")
+ puts("="*50)
+ if @item.length == 0
+ puts("所持アイテムはありません")
+ else
+ while true
+ x = @item + ["戻る"]
+ question(x,"suji")
+ n = @select
+ i = x[n]
+ if x[n] == x[-1]
+ @select = "戻る"
+ return
+ end
+ if question(@@choices["使うor使わない"],"moji") == "使う"
+ @status["HP"] += @@item_list[i][0]
+ @status["MP"] += @@item_list[i][1]
+ if @status["HP"] > @status["MAXHP"]
+ @status["HP"] = @status["MAXHP"]
+ end
+ if @status["MP"] > @status["MAXMP"]
+ @status["MP"] = @status["MAXMP"]
+ end
+ @item.delete_at(n)
+ puts("="*50)
+ print("\n")
+ break
+ else
+ redo
+ end
+ end
+ end
+ puts("="*50)
+ print("\n")
+ end
+
+ def kyoukai
+ return
+ question(@@choices["教会"]+["戻る"],"moji")
+ if @select == "祈りを捧げる[セーブ]"
+ print("Praying(Saving)")
+ dot(["."]*3,1)
+
+ items = @item.join("/")
+
+ data = []
+ n = 0
+ for i in @@key
+ data << @status[i]
+ end
+ data << items
+ p data
+ CSV.open("RPG.csv","w") do |c|
+ data.each{|row| c << row}
+ end
+
+ elsif @select == "戻る"
+ return
+ end
+ end
+
+ def yadoya
+ puts("宿屋の主人:一泊10Gだよ")
+ if question(@@choices["宿屋"],"moji") == "泊まる10G"
+ if not @status["G"] >= 10
+ puts("宿屋の主人:お前 金持ってないのか!?")
+ puts("宿屋の主人:冷やかしは帰れ!!")
+ return
+ else
+ @status["G"] -= 10
+ end
+ @status["HP"] = @status["MAXHP"]
+ @status["MP"] = @status["MAXMP"]
+ print("Sleeping")
+ dot(["."]*3,1)
+ print("\n")
+ else
+ puts("宿屋の主人:なんだ 泊まんねーのかよ")
+ end
+ end
+
+ def item_shop
+ puts("店の店主:どれを買う?")
+ x = 0
+ a = []
+ b = []
+ for i in @area
+ y = /クリア/ !~ i
+ if y == false
+ x += 1
+ end
+ end
+ for i in @@shop_list
+ if i[2] <= x
+ a << i[0]
+ b << i[1]
+ end
+ end
+ question(a+["戻る"],"suji")
+ if @select == a.length
+ return
+ end
+ if @status["G"] >= b[@select]
+ @status["G"] -= b[@select]
+ @item << a[@select]
+ puts("店の店主:ありがとな また買ってくれ")
+ else
+ puts("店の店主:こら お金もないのに 買うと言わない!")
+ end
+ end
+
+ def dot(dot,matu)
+ for i in dot
+ print i
+ sleep(matu)
+ end
+ end
+
+ def tansaku
+ x = @area + ["戻る"]
+ select = question(x,"moji")
+ if select == "エリア1:ポルタ平原"
+ battle(0,3,select,5,"プリーンビーストロード戦闘前","プリーンビーストロード勝利後")
+ end
+ end
+
+ def encounter(list)
+ return list[rand(list.length)]
+ end
+
+ def battle(s,e,area,boss,t1,t2)
+ for n in @@probability[s..e]
+ @teki = encounter(n)
+ sleep(rand(40)/10)
+ @status["バトル数"] += 1
+ @@enemy["エンカウント数"][@teki] += 1
+ game
+ if @result == "勝ち"
+ print("\n")
+ printf("%s\e[mに勝った!\n",@@enemy["name"][@teki])
+ print("\n")
+ x = @@enemy["EXP"][@teki] + ((@@enemy["EXP"][@teki]/10).floor * (rand(3) + 1) + (rand(3) + 1))
+ @status["EXP"] += x
+ @status["処理用EXP"] += x
+ @status["G"] += @@enemy["G"][@teki] + ((@@enemy["G"][@teki]/10).floor * (rand(3) + 1) + (rand(3) + 1))
+ @status["勝利数"] += 1
+ @@enemy["勝利数"][@teki] += 1
+ level
+ elsif @result == "負け"
+ gameovre #GAMEOVREのメソッド
+ @status["HP"] = @status["MAXHP"] #HP全快
+ @status["MP"] = @status["MAXMP"] #MP全快
+ @status["G"] -= ((@status["G"]/10).floor + 10)#Gを減らす
+ if @status["G"] < 0 #Gが0未満になった場合
+ @status["G"] = 0
+ end
+ @status["敗北数"] += 1
+ @@enemy["敗北数"][@teki] += 1
+ return
+ elsif @result == "逃走"
+ @status["逃走数"] += 1
+ return
+ end
+ question(@@choices["進むor戻る"],"moji")
+ if @select == "拠点に戻る"
+ return
+ end
+ end
+ x = /クリア/ !~ area
+ if false == x
+ puts("もう先には行けなさそうだ")
+ return
+ end
+ puts("この先から禍々しい気配がする")
+ question(@@choices["進むor戻る"],"moji")
+ if @select == "深部に進む"
+ @teki = boss
+ talk(t1)
+ game
+ if @result == "勝ち"
+ print("\n")
+ printf("%sの主 %s\e[mに勝った!\n",area,@@enemy["name"][@teki])
+ print("\n")
+ x = @@enemy["EXP"][@teki] + ((@@enemy["EXP"][@teki]/10).floor * (rand(3) + 1) + (rand(3) + 1))
+ @status["EXP"] += x
+ @status["処理用EXP"] += x
+ @status["G"] += @@enemy["G"][@teki] + ((@@enemy["G"][@teki]/10).floor * (rand(3) + 1) + (rand(3) + 1))
+ @status["勝利数"] += 1
+ @@enemy["勝利数"][@teki] += 1
+ level
+ elsif @result == "負け"
+ gameovre #GAMEOVREのメソッド
+ @status["HP"] = @status["MAXHP"] #HP全快
+ @status["MP"] = @status["MAXMP"] #MP全快
+ @status["G"] -= ((@status["G"]/5).floor + 30)#Gを減らす
+ if @status["G"] < 0 #Gが0未満になった場合
+ @status["G"] = 0
+ end
+ @status["敗北数"] += 1
+ @@enemy["敗北数"][@teki] += 1
+ return
+ end
+ talk(t2)
+ addition(area)
+ end
+ end
+
+ def gameovre
+ puts("GAMEOVER")
+ picture = spawn "display -geometry +0+0 gameover.png"
+ gets
+ Process.kill(:INT,picture)
+ end
+
+ def syouhai
+ if @@enemy["HP"][@teki] <= 0 || @status["HP"] <= 0 || @result == "逃走"
+ return true
+ end
+ return false
+ end
+
+ def effect #==========================================================================
+ return
+ x = @@support_skill_list[i][0]
+ for i in @support_skill
+ if @@support_skill_list[i][0] == 0
+ x = @time
+ end
+ if @time <= x
+ @status["HP"] += @@support_skill_list[i][1]
+ @status["MP"] += @@support_skill_list[i][2]
+ end
+ end
+ end
+
+ def game
+ print("戦闘")
+ dot(["="]*20,0.01)
+ print("\n")
+ @@enemy["HP"][@teki] = @@enemy["MAXHP"][@teki]
+ printf("%s\e[mが現れた\n",@@enemy["name"][@teki])
+ @time = 1
+ move = rand(2)
+ @result = "戦闘"
+ while true
+ printf("第%sターン\n",@time)
+ if @status["DEX"] > @@enemy["DEX"][@teki]
+ myturn
+ if syouhai == true
+ break
+ end
+ enemyturn
+ elsif @status["DEX"] < @@enemy["DEX"][@teki]
+ enemyturn
+ if syouhai == true
+ break
+ end
+ myturn
+ elsif @status["DEX"] == @@enemy["DEX"][@teki]
+ if move == 0
+ myturn
+ if syouhai == true
+ break
+ end
+ enemyturn
+ else
+ enemyturn
+ if syouhai == true
+ break
+ end
+ myturn
+ end
+ end
+ if syouhai == true
+ break
+ end
+ @time += 1
+ print("\n")
+ effect
+ end
+ if not @result == "逃走"
+ if @status["HP"] <= 0
+ @result = "負け"
+ elsif @@enemy["HP"][@teki] <= 0
+ @result = "勝ち"
+ end
+ end
+ end
+
+ def enemyturn
+ @turn = "敵"
+ display("敵")
+ x = ["攻撃","剣技","魔法","魔剣","回復"]
+ @waza = encounter(@@enemy["攻撃"][@teki])
+ type = x.index(@waza[0..1])
+ puts @waza
+ if type == 2
+ magic
+ elsif type == 3
+ magic_sword
+ elsif type == 4
+ heal
+ else
+ sword
+ end
+ end
+
+ def sword
+ if @turn == "敵"
+ @damage = @@enemy["ATS"][@teki] + @@attack_list[@waza][0] - ((@status["DEF"] / 2).floor)
+ @@enemy["HP"][@teki] -= @@attack_list[@waza][1]
+ if @damage <= 0
+ @damae = 0
+ @damage += 1
+ @damage += (@@attack_list[@waza][0]/10).floor
+ end
+ if rand((@@enemy["AGI"][@teki]*2+@@enemy["DEX"][@teki]+@@enemy["LUK"][@teki]/2).floor*2)+@@attack_list[@waza][-2] > rand(((@status["DEX"]*2+@status["AGI"]+@status["LUK"]/2).floor/2).floor)
+ if rand(((@@enemy["AGI"][@teki]*2+@@enemy["DEX"][@teki]+@@enemy["LUK"][@teki]/2).floor/4).floor)+@@attack_list[@waza][-1] > rand((@status["DEX"]*2+@status["AGI"]+@status["LUK"]/2).floor)
+ @damage = (@damage*1.5).floor
+ end
+ @status["HP"] -= @damage
+ else
+ @damage = 0
+ end
+ elsif @turn == "PL"
+ @damage = @status["ATS"] + @@attack_list[@waza][0] - ((@@enemy["DEF"][@teki] / 2).floor)
+ @status["HP"] -= @@attack_list[@waza][1]
+ if @damage <= 0
+ @damage = 0
+ @damage += 1
+ @damage += (@@attack_list[@waza][0]/10).floor
+ end
+ if rand((@status["AGI"]*2+@status["DEX"]+@status["LUK"]/2).floor*2)+@@attack_list[@waza][-2] > rand(((@@enemy["DEX"][@teki]*2+@@enemy["AGI"][@teki]+@@enemy["LUK"][@teki]/2).floor/2).floor)
+ if rand(((@status["AGI"]*2+@status["DEX"]+@status["LUK"]/2).floor/4).floor)+@@attack_list[@waza][-1] > rand((@@enemy["DEX"][@teki]*2+@@enemy["AGI"][@teki]+@@enemy["LUK"][@teki]/2).floor)
+ @damage = (@damage*1.5).floor
+ end
+ else
+ @damage = 0
+ end
+ @@enemy["HP"][@teki] -= @damage
+ end
+ process
+ end
+
+ def magic
+ mp = @@attack_list[@waza][2] + rand(4)
+ if @turn == "敵"
+ if mp > @@enemy["MP"][@teki]
+ mp = @@attack_list[@waza][2]
+ end
+ if mp > @@enemy["MP"][@teki]
+ mp = @@enemy["MP"][@teki]
+ end
+ @damage = @@enemy["MAT"][@teki] * ((mp/2).floor +1) + @@attack_list[@waza][0] - (@status["MDF"]/3).floor - (@status["MP"]/5).floor
+ @@enemy["MP"][@teki] -= mp
+ @@enemy["HP"][@teki] -= @@attack_list[@waza][1]
+ if @damage <= 0
+ @damage = 0
+ @damage += 1
+ @damage += (@@attacl_list[@waza][0]/10).floor
+ end
+ if rand((@@enemy["AGI"][@teki]*2+@@enemy["DEX"][@teki]+@@enemy["LUK"][@teki]/2).floor*2)+@@attack_list[@waza][-2] > rand(((@status["DEX"]*2+@status["AGI"]+@status["LUK"]/2).floor/2).floor)
+ if rand(((@@enemy["AGI"][@teki]*2+@@enemy["DEX"][@teki]+@@enemy["LUK"][@teki]/2).floor/4).floor)+@@attack_list[@waza][-1] > rand((@status["DEX"]*2+@status["AGI"]+@status["LUK"]/2).floor)
+ @damage = (@damage*1.5).floor
+ end
+ @status["HP"] -= @damage
+ else
+ @damage = 0
+ end
+
+ elsif @turn == "PL"
+ if mp > @status["MP"]
+ mp = @@attack_list[2]
+ end
+ if mp > @status["MP"]
+ mp = @status["MP"]
+ end
+ @damage = @status["MAT"] * ((mp/2).floor +1) + @@attack_list[@waza][0] - (@@enemy["MDF"][@teki]/3).floor - (@@enemy["MP"][@teki]/5).floor
+ @status["MP"] -= mp
+ @status["HP"] -= @@attack_list[@waza][1]
+ if @damage <= 0
+ @damage = 0
+ @damage += 1
+ @damage += (@@attacl_list[@waza][0]/10).floor
+ end
+ if rand((@status["AGI"]*2+@status["DEX"]+@status["LUK"]/2).floor*2)+@@attack_list[@waza][-2] > rand(((@@enemy["DEX"][@teki]*2+@@enemy["AGI"][@teki]+@@enemy["LUK"][@teki]/2).floor/2).floor)
+ if rand(((@status["AGI"]*2+@status["DEX"]+@status["LUK"]/2).floor/4).floor)+@@attack_list[@waza][-1] > rand((@@enemy["DEX"][@teki]*2+@@enemy["AGI"][@teki]+@@enemy["LUK"][@teki]/2).floor)
+ @damage = (@damage*1.5).floor
+ end
+ else
+ @damage = 0
+ end
+ @@enemy["HP"][@teki] -= @damage
+ end
+ process
+ end
+
+ def magic_sword
+ mp = @@attack_list[@waza][2] + rand(4)
+ if @turn == "敵"
+ if mp > @@enemy["MP"][@teki]
+ mp = @@attack_list[@waza][2]
+ end
+ if mp > @@enemy["MP"][@teki]
+ mp = @@enemy["MP"][@teki]
+ end
+ @damage = ((@@enemy["MAT"][@teki]/3).floor + (@@enemy["ATS"][@teki]/2).floor) * ((mp/2).floor +1) * (@@attack_list[@waza][0]/5).floor - (@status["MDF"]/5).floor - (@status["MP"]/8).floor - (@status["DEF"]/3).floor
+ @@enemy["MP"][@teki] -= mp
+ @@enemy["HP"][@teki] -= @@attack_list[@waza][1]
+ if @damage <= 0
+ @damage = 0
+ @damage += 1
+ @damage += (@@attacl_list[@waza][0]/10).floor
+ end
+ if rand((@@enemy["AGI"][@teki]*2+@@enemy["DEX"][@teki]+@@enemy["LUK"][@teki]/2).floor*2)+@@attack_list[@waza][-2] > rand(((@status["DEX"]*2+@status["AGI"]+@status["LUK"]/2).floor/2).floor)
+ if rand(((@@enemy["AGI"][@teki]*2+@@enemy["DEX"][@teki]+@@enemy["LUK"][@teki]/2).floor/4).floor)+@@attack_list[@waza][-1] > rand((@status["DEX"]*2+@status["AGI"]+@status["LUK"]/2).floor)
+ @damage = (@damage*1.5).floor
+ end
+ @status["HP"] -= @damage
+ else
+ @damage = 0
+ end
+ elsif @turn == "PL"
+ if mp > @status["MP"]
+ mp = @@attack_list[@waza][2]
+ end
+ if mp > @status["MP"]
+ mp = @status["MP"]
+ end
+ @damage = (@status["MAT"]/3).floor + (@status["ATS"]/2).floor * ((mp/2).floor +1) * (@@attack_list[@waza][0]/5).floor - (@@enemy["MDF"][@teki]/5).floor - (@@enemy["MP"][@teki]/8).floor - (@@enemy["DEF"]/3).floor
+ @status["MP"] -= mp
+ @status["HP"] -= @@attack_list[@waza][1]
+ if @damage <= 0
+ @damage = 0
+ @damage += 1
+ @damage += (@@attacl_list[@waza][0]/10).floor
+ end
+ if rand((@status["AGI"]*2+@status["DEX"]+@status["LUK"]/2).floor*2)+@@attack_list[@waza][-2] > rand(((@@enemy["DEX"][@teki]*2+@@enemy["AGI"][@teki]+@@enemy["LUK"][@teki]/2).floor/2).floor)
+ if rand(((@status["AGI"]*2+@status["DEX"]+@status["LUK"]/2).floor/4).floor)+@@attack_list[@waza][-1] > rand((@@enemy["DEX"][@teki]*2+@@enemy["AGI"][@teki]+@@enemy["LUK"][@teki]/2).floor)
+ @damage = (@damage*1.5).floor
+ end
+ else
+ @damage = 0
+ end
+ @@enemy["HP"][@teki] -= @damage
+ end
+ process
+ end
+
+ def heal
+ mp = @@attack_list[@waza][1] + rand(4)
+ if @turn == "敵"
+ if mp > @@enemy["MP"][@teki]
+ mp = @@attack_list[@waza][1]
+ end
+ if mp > @@enemy["MP"][@teki]
+ mp = @@enemy["MP"][@teki]
+ end
+ @damage = @@attack_list[@waza][0] + mp + rand(4)
+ @@enemy["HP"][@teki] += @smgw
+ if @@enemy["HP"][@teki] > @@enemy["MAXHP"][@teki]
+ @@enemy["HP"][@teki] = @@enemy["MAXHP"][@teki]
+ end
+ elsif @turn == "PL"
+ if mp > @status["MP"]
+ mp = @@attack_list[@waza][1]
+ end
+ if mp > @status["MP"]
+ mp = @status["MP"]
+ end
+ @damage = @@attack_list[@waza][0] + mp + rand(4)
+ @status["HP"] += @damage
+ if @status["HP"] > @status["MAXHP"]
+ @status["HP"] = @status["MAXHP"]
+ end
+ end
+ process("回復")
+ end
+
+ def myturn
+ display
+ while true
+ question(@@choices["バトル"],"moji")
+ if @select == "攻撃"
+ x = @attack + ["戻る"]
+ @waza = question(x,"moji")
+ if @waza == "戻る"
+ redo
+ end
+ print("\n")
+ puts @waza
+ @turn = "PL"
+ x = ["攻撃","剣技","魔法","魔剣","回復"]
+ if not @waza == "Command:何もしない"
+ type = x.index(@waza[0..1])
+ if type == 2
+ magic
+ elsif type == 3
+ magic_sword
+ elsif type == 4
+ heal
+ else
+ sword
+ end
+ end
+ print("\n")
+ return
+ elsif @select == "アイテム"
+ item
+ if not @select == "戻る"
+ break
+ end
+ elsif @select == "逃げる"
+ x = /ボス/ !~ @@enemy["name"][@teki]
+ print("\n")
+ if not x == false
+ if rand((@status["DEF"] + @status["LUK"])*2) > rand(@@enemy["DEX"][@teki]+@@enemy["LUK"][@teki])
+ puts("逃げ切れた")
+ @result = "逃走"
+ return
+ else
+ puts("逃げ切れなかった")
+ return
+ end
+ else
+ puts("逃げ切れなかった")
+ return
+ end
+ end
+ end
+ end
+
+ def level
+ if not @status["Lv"] == 99
+ while 0 >= @status["LvUP必要EXP"]-@status["処理用EXP"]
+ puts("レベルアップ!")
+ @status["Lv"] += 1
+ printf("Lv%s→Lv%s\n",@status["Lv"]-1,@status["Lv"])
+ @status["処理用EXP"] -= @status["LvUP必要EXP"]
+ @status["前回のLvUP必要EXP"] = @status["LvUP必要EXP"]
+ @status["LvUP必要EXP"] = (@status["前回のLvUP必要EXP"]*1.1).ceil
+ @status["MAXHP"] = (@status["MAXHP"]*1.053).ceil
+ @status["MAXMP"] = (@status["MAXMP"]*1.044).ceil
+ @status["ATS"] = (@status["ATS"]*1.05).ceil
+ @status["MAT"] = (@status["MAT"]*1.035).ceil
+ @status["DEF"] = (@status["DEF"]*1.043).ceil
+ @status["MDF"] = (@status["MDF"]*1.04).ceil
+ @status["DEX"] = (@status["DEX"]*1.045).ceil
+ @status["AGI"] = (@status["AGI"]*1.045).ceil
+ @status["LUK"] = @status["Lv"]
+ if not @@skill[@status["Lv"].to_s][0] == nil
+ for i in @@skill[@status["Lv"].to_s]
+ @attack << i
+ end
+ end
+ if @status["Lv"] == 99
+ @status["MP"] = 800
+ @status["ATS"] = 120
+ @status["DEF"] = 150
+ @status["DEX"] = 250
+ @status["AGI"] = 200
+ end
+ end
+ end
+ display
+ end
+
+ def addition(mold)
+ if mold == "エリア1:ポルタ平原"
+ @area[0] = "エリア1:ポルタ平原(クリア)"
+ @area[1] = "〇〇森"
+ end
+ end
+
+ def achievement
+ if @@enemy["勝利数"][0]+@@enemy["勝利数"][1]*2 >= 50
+ @area << "ダンジョン:スライムの巣"
+ @area.sort!
+ end
+ end
+
+ def process(mold = "無")
+ if mold == "他"
+ elsif @damage == 0
+ puts("ミス")
+ elsif mold == "回復"
+ printf("回復した\n",@damage)
+ else
+ printf("%dダメージ!\n",@damage)
+ end
+ end
+
+ def command
+ puts("コマンドを出力してください")
+ x = gets.chomp
+ if x == "叡智"
+ @special_skill << "叡智"
+ end
+ end
+
+ def menu
+ while true
+ select = question(@@choices["メニュー"],"moji")
+ print("\n")
+ if select == "ステータスを見る"
+ display("詳細")
+ elsif select == "アイテムを見る"
+ item
+ elsif select == "装備を見る"
+
+ elsif select == "宿屋に行く"
+ yadoya
+ elsif select == "武器屋に行く"
+
+ elsif select == "アイテムショップに行く"
+ item_shop
+ elsif select == "教会に行く"
+ kyoukai
+ elsif select == "探索に行く"
+ tansaku
+ elsif select == "Command"
+ command
+ end
+ end
+ end
+
+end
+
+x = RPG.new
+x.first
+