diff --git a/2021tosikosi.rb b/2021tosikosi.rb new file mode 100755 index 0000000..537e126 --- /dev/null +++ b/2021tosikosi.rb @@ -0,0 +1,32 @@ +#!/usr/bin/env ruby +# -*- coding: utf-8 -*- + +require 'curses' +include Curses +init_screen +begin + + class Clock + def initialize + curs_set(0) + setpos(0,0) + addstr("年越しカウントダウン") + setpos(1,0) + addstr(sprintf("2022年まで あと%d秒",(Time.mktime(2022,1,1,0,0)-Time.now).to_i)) + refresh + while not (Time.mktime(2022,1,1,0,0)-Time.now).to_i == 0 + if not (Time.mktime(2022,1,1,0,0)-Time.now).to_i == 0 + close_screen + setpos(0,0) + addstr("年越しカウントダウン") + setpos(1,0) + addstr(sprintf("2022年まで あと%d秒",(Time.mktime(2022,1,1,0,0)-Time.now).to_i)) + refresh + end + end + end + end + x = Clock.new +ensure + close_screen +end diff --git a/CalculationGame.rb b/CalculationGame.rb index b81e4f8..ccef125 100755 --- a/CalculationGame.rb +++ b/CalculationGame.rb @@ -6,7 +6,7 @@ @@choices = {"メニュー" => ["プレイ"]} end - def question(choices,mold) + def question(choices,mold = "moji") kaisu = 0 select = -1 if mold == "hyozi" @@ -55,8 +55,9 @@ def game while true - puestion(@@choices["メニュー"]) + question(@@choices["メニュー"]) if @select == "プレイ" + play1 end end end @@ -73,7 +74,7 @@ while true printf("%d+%d=",a,b) kaitou = gets.to_f - if kaitou == x && t < Time.new+30+z + if kaitou == x && t < Time.new+z puts("正解!") z+=8 turn += 1 @@ -82,11 +83,15 @@ elsif t >= Time.new+60+z return else + puts("不正解!") z-=(5+(turn/10).floor(1)) end + p t-Time end end end - end + +x = CalculationGame.new +x.game diff --git a/NewRPG.rb b/NewRPG.rb deleted file mode 100755 index 3df852e..0000000 --- a/NewRPG.rb +++ /dev/null @@ -1,903 +0,0 @@ -#!/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+["回復:ヒール"] - @@enemy = CSV.read("enemy.csv",:headers => true,:converters => :numeric) - for i in @@enemy["name"] - i.gsub!("|","\e") - end - puts @@enemy["name"] - @@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" => ["はじめから","つづきから","ゲーム説明","クレジットタイトル"], - "ロード" => ["ロードする","タイトルに戻る"], - "性別" => ["男","女"], - "一人称" => ["俺","僕","私"], - "メニュー" => ["ステータスを見る","アイテムを見る","装備を見る","宿屋に行く","武器屋に行く","アイテムショップに行く","教会に行く","探索に行く"], - "使うor使わない" => ["使う","使わない"], - "宿屋" => ["泊まる10G","泊まらない"], - "教会" => ["祈りを捧げる[セーブ]"], - "バトル" => ["攻撃","アイテム","逃げる"], - "進むor戻る" => ["深部に進む","拠点に戻る"] - } - - @item = [] - - @@itemlist = [] - - @area = ["エリア1:ポルタ平原"] - - @attack = ["剣技:スラッシュ"] - - @@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] #<=管理者特権 - } - - @@skill = CSV.read("skill.csv",:headers => true) - @attack_ckeck = [0,0,-1,-1] - - @@pass = {"スーパーアカウント" => ["ADMINISTRATOR","HEALER"], - "管理者" => ["管理者","administrator","ADMINISTRATOR"], - "ヒーラー" => ["ヒーラー","HEALER","healer"]} - - @@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("PLの名前を決めてください") - name = "" - while name == "" - print("name…") - name = gets.chomp - if @@pass["管理者"].include?(name) == true - @status = {"Lv" => "\e[93m\"ADMINISTRATOR\"\e[m", - "EXP" => 0, - "処理用EXP" => 0, - "LvUP必要EXP" => 8, - "前回のLvUP必要EXP" => 0, - "G" => 100000000, - "HP" => 100000000, - "MAXHP" => 100000000, - "MP" => 100000000, - "MAXMP" => 100000000, - "ATS" => 100000000, - "MAT" => 100000000, - "DEF" => 100000000, - "MDF" => 100000000, - "DEX" => 100000000, - "AGI" => 100000000, - "LUK" => 100000000 - } - @attack << "Command:何もしない" - @attack << "攻撃Command:Delete Life" - puts('コード"管理者"を認証しました') - puts("スーパーアカウントの使用を許可します") - x = "OK" - redo - - elsif @@pass["ヒーラー"].include?(name) == true - @status = {"Lv" => "\e[92m\"HEALER\"\e[m", - "EXP" => 0, - "処理用EXP" => 0, - "LvUP必要EXP" => 8, - "前回のLvUP必要EXP" => 0, - "G" => 30, - "HP" => 100000000, - "MAXHP" => 100000000, - "MP" => 3, - "MAXMP" => 3, - "ATS" => 8, - "MAT" => 5, - "DEF" => 5, - "MDF" => 3, - "DEX" => 20, - "AGI" => 15, - "LUK" => 1 - } - @attack << "Command:何もしない" - @attack << "回復Command:Soul Regeneration" - puts('コード"ヒーラー"を認証しました') - puts("スーパーアカウントの使用を許可します") - x = "OK" - redo - end - end - - if x.nil? == true - @status = {"Lv" => 1, - "EXP" => 0, - "処理用EXP" => 0, - "LvUP必要EXP" => 8, - "前回のLvUP必要EXP" => 0, - "G" => 30, - "HP" => 20, - "MAXHP" => 20, - "MP" => 3, - "MAXMP" => 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 - 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 - print("\n") - puts("="*50) - printf("name:%s Lv.%s ",@status["name"],@status["Lv"]) - if @status["EXP"].nil? == false - printf("EXP:%d %dG\n",@status["EXP"],@status["G"]) - printf("HP:%d/%d MP:%d/%d",@status["HP"],@status["MAXHP"],@status["MP"],@status["MAXMP"]) - else - print("%sG\n",@status["G"]) - print("HP:%s MP:%s",@status["HP"],@status["MP"]) - end - printf("ATS:%s MAT:%s DEF:%s MDF:%s DEX:%s AGI:%s LUK:%s",@status["ATS"],@status["MAT"],@status["DEF"],@status["MDF"],@status["DEX"],@status["AGI"],@status["LUK"]) - print("\n") - puts("="*50) - print("\n") - end - - def item - print("\n") - puts("="*50) - if @item.length == 0 - puts("所持アイテムはありません") - else - while true - x = @item + ["戻る"] - question(x,suji) - if x[@select] == x[-1] - return - end - if question(@@choices["使うor使わない"],moji) == "使う" - for i in @@itemlist - if @item[select] == i[0] - @status["HP"] += i[1] - @status["MP"] += i[2] - end - end - 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 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 game - print("戦闘") - dot(["="]*20,0.01) - print("\n") - @@enemy["HP"][@teki] = @@enemy["MAXHP"][@teki] - printf("%s\e[mが現れた",@@enemy["name"][@teki]) - turn = rand(2) - @result = "戦闘" - while true - p @@enemy["HP"][@teki] - 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 ture == 0 - myturn - if syouhai == true - break - end - enemyturn - else - enemyturn - if syouhai == true - break - end - myturn - end - end - if syouhai == true - break - end - end - if @status["HP"] <= 0 - @result = "負け" - elsif @@enemy["HP"][@teki] <= 0 - @result = "勝ち" - end - end - - def enemyturn - @turn = "敵" - 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 - p @turn - 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 - p @@enemy["HP"][@teki] - printf("%sダメージ",@damage) - @@enemy["HP"][@teki] -= @damage - p @@enemy["HP"][@teki] - 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 - 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 - elsif @select == "逃げる" - x = /ボス/ !~ @@enemy["name"][@teki] - 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 && @@pass["スーパーアカウント"].include?(@status["Lv"]) == false - 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 menu - while true - select = question(@@choices["メニュー"],"moji") - print("\n") - if select == "ステータスを見る" - display - elsif select == "アイテムを見る" - item - elsif select == "装備を見る" - - elsif select == "宿屋に行く" - yadoya - elsif select == "武器屋に行く" - - elsif select == "アイテムショップに行く" - - elsif select == "教会に行く" - kyoukai - elsif select == "探索に行く" - tansaku - end - end - end -end - -x = RPG.new -x.first diff --git a/RPG.csv b/RPG.csv deleted file mode 100644 index e69de29..0000000 --- a/RPG.csv +++ /dev/null diff --git a/RPG.rb b/RPG.rb index 064db51..8fb04b3 100755 --- a/RPG.rb +++ b/RPG.rb @@ -1,658 +1,976 @@ #!/usr/bin/env ruby # -*- coding: utf-8 -*- -#変数名の最初は大文字NG +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プリーンビーストロード:×% △& @%゛□$ △$ $% %$"], -$ability = {"HP" => 20, - "MP" => 3, - "ATS" => 8, - "MAT" => 5, - "DEF" => 5, - "DEX" => 20, - "AGI" => 15, - "LUK" => 1} -#能力値最大 -#HP(0体力)MP(1魔力)ATS(2攻撃力)MAT(3魔法攻撃力)DEF(4防御力)DEX(5素早さ)AGI(6器用さ)LUK(7運) + "プリーンビーストロード勝利後" => ["\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_:町に行くためには無理にでも森を抜けないとな)"] + } -$current = {"HP" => 20, - "MP" => 3} -#現在の能力値 -#現在のHPとMP - -$lv = [1,0,0] #レベル関連 -#Lv(レベル)所持EXP(経験値)次のLvUPに必要なEXPの処理に使う - -$lvup = [0,8] -#前回のLvUP必要EXP LvUP必要EXP - -$g = 30 #お金(Gold) - -$count = {"戦闘数" => 0, - "勝利数" => 0, - "敗北数" => 0, - "逃走数" => 0} - -$progress = 0 #ストーリーの進行度 - -$gamedescription = [ # ゲーム説明 - "ゲーム説明","このゲームはメニューで行動を選択して遊びます", - "ステータスを見る・宿屋へ行く・武器屋へ行く・教会へ行く・探索へ行くの中から好きなのを選びます", - "ステータスを見るは今の自分のステータスを見ることができます", - "HP=体力 MP=魔力・魔法防御力 ATS=攻撃力 MAT=魔法攻撃力 DEF=防御力 DEX=素早さ AGI=器用さ LUK=運", - "宿屋はGを支払うとHP・MPが回復します", - "武器屋は武器・防具を購入することができます", - "教会はセーブをすることができます", - "探索は魔物の生息地に行き 戦いをします", - "戦いは行動を選択して魔物を倒します", - "死んでしまったら'GAMEOVER'でGを失い村・街からやり直しです", - "目標は魔王を倒すこと!", - "じゃぁクリア目指して頑張ってね", - "※このゲームは共同制作作品です" - ] - - -prorogu = [ # 最初の会話シーン - "\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[96m_me_:すみません ここが どこか わかりますか", - "\e[2m村人:何いってるんだい?", - "\e[2m村人:ここは「パクス村」ディーヴァス川のほとりにある小さな農村さ", - "\e[2m村人:ここが初めてなら注意しておくけど「ポルタ平原」には魔物が出るから用意なしには行くなよ", - "\e[2m村人:まぁ旅 人なら宿屋で休んでいきな", - "\e[96m_me_:あっ _jibun_ お金持ってないんですけど", - "\e[2m村人:なんだお前さん一文無しかよ", - "\e[2m村人:しかたねーなー ここで会ったのも何かの縁だ", - "\e[2m村人:30Gやるから あとは魔物でも倒して自分で稼げ", - "(_me_は村人から30Gをもらった)", - "\e[2m村人:じゃぁな", - "\e[96m_me_:とりあえずポルタ平原を探索しようかな" - ] - -#\e[○mは色を変えるコマンド -#_me_などはPLの名前などに置き換える - -credit = [ - "スタッフロール(クレジットタイトル)","システム","村井侑平 澤田羽衣", - "システムアドバイザー","佐藤隆之助 阿部光峻", - "広瀬雄二様 東北公益文科大学の皆様", - "シナリオ","村井侑平 高橋真翔 佐藤風斗 佐藤然", - "シナリオアドバイザー","佐藤隆之助 澤田羽衣 疋田琉莉 阿部光峻", - "グラフィック","村井侑平", - "この作品に関わった すべての方に感謝の意を申し上げます", - "制作","「#みんなでゲームを作ろう」の会"] -#クレジットタイトル(スタッフロール) - -$battleselect = {"攻撃" => "攻撃", - "アイテム" => "アイテム", - "逃げる" => "逃げる"} -#バトルの行動の選択肢 - -$attack = ["スラッシュ"}] #攻撃名 -$attackdetail = [[1,0,0]] #攻撃の詳細 -#ダメージ増加 使用MP 反動によるダメージ - -$monster = ["スライム","デーモンビースト","\e[93mゴールデンスライム","黒い影"] #モンスター名 - -$enemy = {"HP" => [12,,15,15,10], - "MAXHP" => [12,15,15,10], - "MP" => [8,5,20,15], - "MAXMP" => [8,5,20,15], - "ATS" => [4,,10,6,0], - "MAT" => [0,0,0,8], - "DEF" => [3,10,30,15], - "DEX" => [10,25,8,35], - "AGI" => [8,15,8,25], - "LUK" => [1,1,1,3], - "EXP" => [3,7,30,13], - "攻撃" => ["たいあたり","突進","たいあたり","Error"], - "魔法" => ["Error","Error","Error","闇の刃"]} - -$kakuritu = [0]*91 + [1]*5 + [3]*3 + [2]*1,[0]*82 + [1]*10 + [3]*5 + [2]*3,[0]*72 + [1]*15 + [3]*8 + [2]*5,[0]*52 + [1]*25 + [3]*15 + [2]*8,[0]*25 + [1]*40 + [3]*25 + [2]*10 -#モンスターの出現確率 - -$skillkakuritu = [] -#ボスのスキルの確率を入れる予定 - -$status = [] #PLが入力する[名前、性別、一人称etc.] - -$item = [] #アイテム - -$itemlist = [] -#アイテムの効果などの一覧 - -$area = [] #探索に行けるエリア - -$searchselect = ["深部に進む","拠点に戻る"] - -$sentaku = ["プレイ","ゲーム説明","クレジットタイトル"] - -q1 = ["男","女"] #性別 -q2 = ["俺","僕","私"] #一人称 -#キャラ設定の選択肢 - -$nani = [ - ["名前","性別","一人称"], - ["Lv","EXP"],["HP","MP"],["ATS","MAT","DEF","DEX","AGI","LUK"], - ["ステータスを見る","アイテムを見る","装備を見る","宿屋に行く","武器屋に行く","教会に行く","探索に行く"]] - -yadoya = ["泊まる10G","泊まらない"] -kyokai = ["祈りを捧げる","聖水を買う20G"] -bukiya = ["石剣10G ATS+1","買わない"] -#各施設の選択肢 - -def status #ステータスを表示するためのメソッド - x = 0 - puts" ステータス" - for i in $nani[0] #i = ["名前","性別","一人称"] - printf("%s:%s ",i,$status[x]) #名前性別一人称 - x += 1 - end - x = 0 # xは同時にforしてるイメージでやってるやつ - printf("Lv.%s ",$lv[0]) - printf("EXP:%d ",$lv[1]) - printf("所持金:%dG",$g]) - print("\n") - for i in $nani[2] - printf("%s:%d/%d ",i,$current[i],$ability[i]) - x += 1 - end - x = 2 - for i in $nani[3] - printf("%s:%d ",i,$ability[i]) - x += 1 - end - print("\n\n") -end - -def question(situmon,list,kata = "moji") #質問を出すメソッド - kaisu = 0 ## 3番目の引数kataで返却値を文字か数字か決める ## - select = -1 ## "moji"(デフォルト)->文字 "kazu"->数字 ## - if kata == "hyozi" - while kaisu < list.length - printf("%s",list[kaisu]) - print("\e[m") - kaisu += 1 + 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 - else - while kaisu < list.length # "kazu"と入れなければ文字が返ります # - printf("%s(%d)\n",list[kaisu],kaisu) - print("\e[m") - kaisu += 1 + 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"] + + @@enemy = {"name" => n, + "hp" => hP, + "HP" => hP, + "MAXHP" => hP, + "mp" => mP, + "MP" => mP, + "MAXMP" => mP, + "ATS" => aTS, + "MAT" => mAT, + "DEF" => dEF, + "MDF" => mDF, + "DEX" => dEX, + "AGI" => aGI, + "LUK" => lUK, + "G" => g, + "EXP" => eXP} + + @@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" => ["はじめから","つづきから","ゲーム説明","クレジットタイトル"], + "ロード" => ["ロードする","タイトルに戻る"], + "性別" => ["男","女"], + "一人称" => ["俺","僕","私"], + "メニュー" => ["ステータスを見る","アイテムを見る","装備を見る","宿屋に行く","武器屋に行く","アイテムショップに行く","教会に行く","探索に行く"], + "使うor使わない" => ["使う","使わない"], + "宿屋" => ["泊まる10G","泊まらない"], + "教会" => ["祈りを捧げる[セーブ]"], + "バトル" => ["攻撃","アイテム","逃げる"], + "進むor戻る" => ["深部に進む","拠点に戻る"] + } + + @item = [] + + @@itemlist = [] + + @area = ["エリア1:ポルタ平原"] + + @attack = ["剣技:スラッシュ"] + + @@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] #<=管理者特権 + } + + @@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 = {"武器:木刀" => [],"防具:木製の防具" => []} + + @@pass = {"スーパーアカウント" => ["\e[93m\"ADMINISTRATOR\"\e[m","\e[92m\"HEALER\"\e[m"], + "管理者" => ["管理者","administrator","ADMINISTRATOR"], + "ヒーラー" => ["ヒーラー","HEALER","healer"]} + + @@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 - while select < 0 || select >= list.length #回答の仕分け - print(situmon+":") - select = gets - if select == "\n" + 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 kata == "moji" - return list[select] - elsif kata == "kazu" + if mold == "moji" + @select = choices[select] + return choices[select] + elsif mold == "suji" + @select = select return select else puts"questionメソッドでスペルミスしてるようだ" end end -end -def dot(time,kaisu,ten) #「.」とかのためにいろいろ打ちたくなかったのメソッド - for i in 1..kaisu - sleep(time) - print(ten) - end -end - -def story(hanasi,status,dainyu = "suru") #物語のgetsをサボりたいのメソッド - if dainyu == "suru" - for i in hanasi - puts(i.sub("_me_", status[0]) #subがiのキーワードを - .sub("_jibun_", status[2]) #特定の文字に - .sub("_seibetu_", status[1])) #置き換えてくれる - print("\e[m") - gets - end - elsif dainyu == "sinai" # 3番目に"sinai"を入れるとここに来る("代入しない") - for i in hanasi ## subるやつがないやつは"sinai"をつけること ## - puts(i) - print("\e[m") - gets - end - end -end - -def encounter(list) #何のモンスターが出現するか決めてくれるメソッド - return list[rand(list.length)] -end - -def enemyturn #敵のターンの一連の処理をまとめたメソッド - if $probability > 3 #ボス用の処理(未完成) - skill = encounter - elsif $probability > 2 - enemymagic - else - if rand((($enemy[probability][4]*1.5).round) + 1) < rand($enemy[probability][5] + 1) #左:物理攻撃 右:魔法攻撃 - enemymagic #魔法攻撃 - else - enemyattack #物理攻撃 - end - end -end - -def process(damage) #ダメージの表示をする - if damage < 1 - puts("攻撃失敗") - else - printf("%dダメージ\n",damage) #ダメージの表示 - end -end - -def battle #バトルの一連の処理をまとめた"すごい"メソッド - $escape = 1 - printf("%s\e[mが現れた\n",monster) - print("戦闘") - dot(0.01,28,"=") - print("\n") - turn = rand(2) - $enemy[probability][0] = $enemy[probability][1] - $enemy[probability][2] = $enemy[probability][3] - while true - if current["HP"] <= 0 - return 0 #負け - $elsif enemy[probability][0] <= 0 - return 1 #勝ち - elsif $escape == 0 - return 2 - end - - if ability[5] < enemy[probability][7] #敵の方がDEXが早かったとき - enemyturn(probability,monster,enemy,ability,current) - - if current[0] <= 0 - return 0 #負け - elsif enemy[probability][0] <= 0 - return 1 #勝ち - elsif escape[0] == 0 - return 2 - end - - myturn(probability,monster,enemy,ability,current,item,status,nani,lv,g,attack,attackdetail,battleselect,escape) - - elsif ability[5] == enemy[probability][7] #敵とPLのDEXが同じ値だったとき - - if turn == 0 - - myturn(probability,monster,enemy,ability,current,item,status,nani,lv,g,attack,attackdetail,battleselect,escape) - - if current[0] <= 0 - return 0 #負け - elsif enemy[probability][0] <= 0 - return 1 #勝ち - elsif escape[0] == 0 - return 2 + 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 - - enemyturn(probability,monster,enemy,ability,current) - - else - enemyturn(probability,monster,enemy,ability,current) - - if current[0] <= 0 - return 0 #負け - elsif enemy[probability][0] <= 0 - return 1 #勝ち - elsif escape[0] == 0 - return 2 + elsif mold == "読み上げ" + for i in @@story[story] + puts i + print("\e[m") + gets end - - myturn(probability,monster,enemy,ability,current,item,status,nani,lv,g,attack,attackdetail,battleselect,escape) - end - - elsif ability[5] > enemy[probability][5] #PLの方がDEXが早かったとき - myturn(probability,monster,enemy,ability,current,item,status,nani,lv,g,attack,attackdetail,battleselect,escape) - - if current[0] <= 0 - return 0 #負け - elsif enemy[probability][0] <= 0 - return 1 #勝ち - elsif escape[0] == 0 - return 2 - end - - enemyturn(probability,monster,enemy,ability,current) - end - end -end - - -def enemymagic(probability,monster,enemy,ability,current) #敵の魔法攻撃の処理 - if not enemy[probability][2] == 0 - print("\n") - printf("%s\e[mの攻撃\n",monster) - mp = (enemy[probability][3])/10.round + rand(3)+1 - if mp > enemy[probability][2] - mp = enemy[probability][2] - elsif mp > 100 - mp = 100 - end - damage = (enemy[probability][5] + (mp / 2).round - current[1] / 2).floor - printf("%s!",enemy[probability][12]) - enemy[probability][2] -= mp - damage += (damage/10).floor*rand(3) + rand(4) - if damage <= 0 - if damage <= -100 - damage = 0 - else - damage = rand(4) - end - end - if rand(enemy[probability][8]*2 + enemy[probability][7] + (enemy[probability][9]/2).floor*2) > rand(((ability[5]*2 + ability[6] + (ability[7]/2).floor)/2).floor) - if rand(enemy[probability][8]*2 + enemy[probability][7] + (enemy[probability][9]/2).floor/4) > rand(((ability[5]*2 + ability[6] + (ability[7]/2).floor)/2).floor) - damage = (damage*1.5).floor - end - current[0] -= damage - else - damage = 0 - end - else - damage = 0 - end - process(damage) -end - -def enemyattack(probability,monster,enemy,ability,current) #敵の物理攻撃の処理 - print("\n") - printf("%s\e[mの攻撃\n",monster) - damage = enemy[probability][4] - ability[4]/2.floor - damage += (damage/10).floor*rand(3) + rand(4) - printf("%s!",enemy[probability][11]) - if damage <= 0 - if damage <= -100 - damage = 0 - else - damage = rand(4) - end - end - if rand(enemy[probability][8]*2 + enemy[probability][7] + (enemy[probability][9]/2).floor*2) > rand(((ability[5]*2 + ability[6] + (ability[7]/2).floor)/2).floor) - if rand(enemy[probability][8]*2 + enemy[probability][7] + (enemy[probability][9]/2).floor/4) > rand(((ability[5]*2 + ability[6] + (ability[7]/2).floor)/2).floor) - damage = (damage*1.5).floor - end - current[0] -= damage - else - damage = 0 - end - process(damage) -end - -def myturn(probability,monster,enemy,ability,current,item,status,nani,lv,g,attack,attackdetail,battleselect,escape) - status(status,ability,current,nani,lv,g) - select = question("行動…",battleselect) - if select == "攻撃" - select = question("攻撃…",attack,"kazu") - damage = ability[2] * attackdetail[select][0] - ((enemy[probability][6] / 2).floor) - damage += (damage/10).floor*rand(3) + rand(4) - if damage <= 0 - if damage <= -100 - damage = 0 - else - damage = rand(4) - end - end - if rand(enemy[probability][7]*2 + enemy[probability][8] + (enemy[probability][9]/2).floor) < rand((((ability[6]*2 + ability[5] + (ability[7]/2).floor)/2).floor)*2) - if rand(enemy[probability][7]*2 + enemy[probability][8] + (enemy[probability][9]/2).floor) < rand(((ability[6]*2 + ability[5] + (ability[7]/2).floor)/2).floor/4) - damage = (damage*1.5).floor - end - else - damage = 0 - end - current[1] -= attackdetail[select][1] - current[0] -= attackdetail[select][2] - printf("%s!",attack[select]) - - enemy[probability][0] -= damage - process(damage) - damage = 0 - - elsif select == "アイテム" - - - elsif select == "逃げる" - if rand((ability[5] + ability[7])*2) > rand(enemy[probability][7] + enemy [probability][9]) - puts("逃げ切れた") - escape[0] = 0 - return - else - puts("逃げ切れなかった") - return - end - - end -end - -#detaの配列は[0]がダメージ[1]が消費MP[2]が反動ダメージ - -def game - sleep(rand(40)/10) - result = battle - $count["戦闘数"] += 1 - if 0 == result - gameovre #GAMEOVREのメソッド - $current["HP"] = $ability["HP"] #HP全快 - $current["MP"] = $ability["MP"] #MP全快 - $g -= (($g/10).floor + 10)#Gを減らす - if $g < 0 #Gが0未満になった場合 - $g = 0 - end - $count["敗北数"] += 1 - return 0 - - elsif 1 == result - print("\n") - printf("%s\e[mに勝った!\n",monster[probability]) - print("\n") - x = enemy[probability][10] + ((enemy[probability][10]/10).floor * (rand(3) + 1) + (rand(3) + 1)) - $lv[1] += x - $lv[2] += x - $g += ((enemy[probability][10] + ((enemy[probability][10]/10).floor * (rand(3) + 1) + (rand(3) + 1)))*1.5).floor - level - count["勝利数"] += 1 - select = question("どうする",$searchselect) - if select == "拠点に戻る" - return 0 - end - - elsif 2 == result - count["逃走数"] += 1 - return 0 - end - return 1 -end - -def appearance - while not n == limit - $probability = {"種類" => encounter($kakuritu[n])}# probability = 遭遇した敵 - game_return = game - if game_return == 0 - return 0 - end - n += 1 - if n == limit - print("\n") - puts("この先から禍々しい気配がする それでも進みますか?") - print("\n") - ques_ans = question("どうする",$searchselect) - if ques_ans == "深部に進む" - #ボス用メソッド - puts("ボス戦は未制作です") - else - return 0 end end end -end -def gameovre - puts("GAMEOVER") - picture = spawn "display -geometry +0+0 gameover.png" - gets - Process.kill(:INT,picture) -end - - - -def level - exp = $lvup[1] - if not $lv[0] == "50(MAX)" || $lv[0] == "\e[93mSPECIAL\e[m" - while 0 >= exp-$lv[2] - puts("レベルアップ!") - x = $lv[0]+1 - printf("Lv%s→Lv%s\n",lv[0],x) - $lv[0] += 1 - $lvup[0] = $lvup[1] - $lvup[1] = ($lvup[0]*1.2).floor - $ability["HP"] = ($ability["HP"]*1.065).ceil - $ability["MP"] = ($ability["MP"]*1.1).ceil - $ability["ATS"] = ($ability["ATS"]*1.04).ceil - $ability["MAT"] = ($ability["MAT"]*1.035).ceil - $ability["DEF"] = ($ability["DEF"]*1.05).ceil - $ability["DEX"] = ($ability["DEX"]*1.045).ceil - $ability["AGI"] = ($ability["AGI"]*1.045).ceil - $ability["LUK"] = $lv[0] - $lv[2] -= exp - if $lv[0] == 50 - $lv[0] = "50(MAX)" - $ability["MP"] = 800 - $ability["ATS"] = 120 - $ability["DEF"] = 150 - $ability["DEX"] = 250 - $ability["AGI"] = 200 + 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 - status -end + -while true - puts("RPG") #ここから やっとメソッドじゃない - select = question("選択",$sentaku) - if select == "ゲーム説明" - print("\n") - story($gamedescription,$status,"sinai") - redo - end - if select == "クレジットタイトル" - print("\n") - story($credit,$status,"sinai") - redo - end - - if select == "プレイ" - name = "" - puts("PL名を決めてください") - while name == "" #この辺少し変だから真似はよく見てやって - print("name…") - name = gets.chomp - if name == "administrator" || name == "管理者" #スーパーアカウント(^_^;) - lv[0] = "\e[93mSPECIAL\e[m" - $ability["HP"] = 1000 - $ability["MP"] = 1500 - $ability["ATS"] = 500 - $ability["MAT"] = 300 - $ability["DEF"] = 400 - $ability["DEX"] = 500 - $ability["AGI"] = 400 - $ability["LUK"] = 100 - $current["HP"] = $ability["HP"] - $current["MP"] = $ability["MP"] - $g = 100000000 - puts("スーパーアカウントの使用を許可します") - puts("PL名を決めてください") - redo - end - end - name = name.chomp - $status << name - $status << question("性別を決めてください",q1) - $status << question("一人称を決めてください",q2) - end - - puts("ゲームを起動します") - sleep(1) - - print"Loading" - dot(0.5,3,".") #「.」を0.5秒間隔で3回表示する - sleep(1) - print("\n\n") - - story(prorogu,$status) #ストーリを表示する - - progress += 1 #進行度を進める - - area << "ポルタ平原" #行けるエリアを増やす - - while true # メニューここから - puts(" メニュー") - x = 0 - koudou = question("行動…",$nani[4]) #koudouはPLの回答を拾ってくる - print("\n") - - if koudou == "ステータスを見る" - status - - elsif koudou == "宿屋に行く" - puts("宿屋の主人:一泊10Gだよ") - select = question("どうする",yadoya) - if select == "泊まる10G" - if $g >= 10 #10Gで泊まれる - $g -= 10 - print"Sleeing" - dot(0.5,3,".") - sleep(1) - print("\n") - current["HP"] = ability["HP"] - current["MP"] = ability["MP"] - puts("宿屋の主人:また 来いよ") #泊まるとHPとMPが全快する - - else - puts("宿屋の主人:お前 金持ってないのか!") - puts("宿屋の主人:ひやかしは帰れ!!") #お金が足りなかった場合 - end - else - puts("宿屋の主人:なんだ泊まんねーのかよ") #泊まんなかった場合 - end - print("\n") - - elsif koudou == "アイテムを見る" - if $item.length == 0 - puts("所持アイテムはありません") + def first + while true + question(@@choices["プレイetc"],"moji") + if @select == "はじめから" print("\n") - else - question("なし",$item) - end - - elsif koudou == "探索に行く" - select = question("どこに探索に行きますか",$area) #どこに行くかの選択 - if select == "ポルタ平原" - n = 0 - limit = 5 - appearance + puts("初期設定"+"="*42) + print("\n") + puts("PLの名前を決めてください") + name = "" + while name == "" + print("name…") + name = gets.chomp + if @@pass["管理者"].include?(name) == true + @status = {"Lv" => "\e[93m\"ADMINISTRATOR\"\e[m", + "EXP" => 0, + "処理用EXP" => 0, + "LvUP必要EXP" => 8, + "前回のLvUP必要EXP" => 0, + "G" => 100000000, + "HP" => 100000000, + "MAXHP" => 100000000, + "MP" => 100000000, + "MAXMP" => 100000000, + "ATS" => 100000000, + "MAT" => 100000000, + "DEF" => 100000000, + "MDF" => 100000000, + "DEX" => 100000000, + "AGI" => 100000000, + "LUK" => 100000000 + } + @attack << "Command:何もしない" + @attack << "攻撃Command:Delete Life" + puts('コード"管理者"を認証しました') + puts("スーパーアカウントの使用を許可します") + x = "OK" + redo + + elsif @@pass["ヒーラー"].include?(name) == true + @status = {"Lv" => "\e[92m\"HEALER\"\e[m", + "EXP" => 0, + "処理用EXP" => 0, + "LvUP必要EXP" => 8, + "前回のLvUP必要EXP" => 0, + "G" => 30, + "HP" => 100000000, + "MAXHP" => 100000000, + "MP" => 3, + "MAXMP" => 3, + "ATS" => 8, + "MAT" => 5, + "DEF" => 5, + "MDF" => 3, + "DEX" => 20, + "AGI" => 15, + "LUK" => 1 + } + @attack << "Command:何もしない" + @attack << "回復Command:Soul Regeneration" + puts('コード"ヒーラー"を認証しました') + puts("スーパーアカウントの使用を許可します") + x = "OK" + redo + end + end + + if x.nil? == true + @status = {"Lv" => 1, + "EXP" => 0, + "処理用EXP" => 0, + "LvUP必要EXP" => 8, + "前回のLvUP必要EXP" => 0, + "G" => 30, + "HP" => 20, + "MAXHP" => 20, + "MP" => 3, + "MAXMP" => 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 + 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 - else - puts"未実装の項目または存在しない選択肢です。" end end - redo + def display + print("\n") + puts("="*50) + printf("name:%s Lv.%s ",@status["name"],@status["Lv"]) + if @status["EXP"].nil? == false + printf("EXP:%d %dG\n",@status["EXP"],@status["G"]) + printf("HP:%d/%d MP:%d/%d",@status["HP"],@status["MAXHP"],@status["MP"],@status["MAXMP"]) + else + print("%sG\n",@status["G"]) + print("HP:%s MP:%s",@status["HP"],@status["MP"]) + end + printf("ATS:%s MAT:%s DEF:%s MDF:%s DEX:%s AGI:%s LUK:%s",@status["ATS"],@status["MAT"],@status["DEF"],@status["MDF"],@status["DEX"],@status["AGI"],@status["LUK"]) + print("\n") + puts("="*50) + print("\n") + end + + 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 game + print("戦闘") + dot(["="]*20,0.01) + print("\n") + @@enemy["HP"][@teki] = @@enemy["MAXHP"][@teki] + printf("%s\e[mが現れた",@@enemy["name"][@teki]) + turn = rand(2) + @result = "戦闘" + while true + 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 ture == 0 + myturn + if syouhai == true + break + end + enemyturn + else + enemyturn + if syouhai == true + break + end + myturn + end + end + if syouhai == true + break + end + end + if @status["HP"] <= 0 + @result = "負け" + elsif @@enemy["HP"][@teki] <= 0 + @result = "勝ち" + end + end + + def enemyturn + @turn = "敵" + 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 + 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] + 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 && @@pass["スーパーアカウント"].include?(@status["Lv"]) == true + 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 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 + end + end + end end + +x = RPG.new +x.first diff --git a/RPG/RPG.rb b/RPG/RPG.rb new file mode 100755 index 0000000..5f5a5ad --- /dev/null +++ b/RPG/RPG.rb @@ -0,0 +1,974 @@ +#!/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"] + + @@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} + + @@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" => ["はじめから","つづきから","ゲーム説明","クレジットタイトル"], + "ロード" => ["ロードする","タイトルに戻る"], + "役職" => ["剣士","魔法使い"], + "性別" => ["男","女"], + "一人称" => ["俺","僕","私"], + "メニュー" => ["ステータスを見る","アイテムを見る","装備を見る","宿屋に行く","武器屋に行く","アイテムショップに行く","教会に行く","探索に行く"], + "使うor使わない" => ["使う","使わない"], + "宿屋" => ["泊まる10G","泊まらない"], + "教会" => ["祈りを捧げる[セーブ]"], + "バトル" => ["攻撃","アイテム","逃げる"], + "進むor戻る" => ["深部に進む","拠点に戻る"] + } + + @item = [] + + @@itemlist = [] + + @area = ["エリア1:ポルタ平原"] + + @attack = ["剣技:スラッシュ"] + + @@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] #<=管理者特権 + } + + @@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 = {"武器:木刀" => [],"防具:木製の防具" => []} + + @@pass = {"スーパーアカウント" => ["\e[93m\"ADMINISTRATOR\"\e[m","\e[92m\"HEALER\"\e[m"], + "管理者" => ["管理者","administrator","ADMINISTRATOR"], + "ヒーラー" => ["ヒーラー","HEALER","healer"]} + + @@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 + if @@pass["管理者"].include?(name) == true + @status = {"Lv" => "\e[93m\"ADMINISTRATOR\"\e[m", + "EXP" => 0, + "処理用EXP" => 0, + "LvUP必要EXP" => 8, + "前回のLvUP必要EXP" => 0, + "G" => 100000000, + "HP" => 100000000, + "MP" => 100000000, + "ATS" => 100000000, + "MAT" => 100000000, + "DEF" => 100000000, + "MDF" => 100000000, + "DEX" => 100000000, + "AGI" => 100000000, + "LUK" => 100000000 + } + @attack << "Command:何もしない" + @attack << "攻撃Command:Delete Life" + puts('コード"管理者"を認証しました') + puts("スーパーアカウントの使用を許可します") + x = "OK" + redo + + elsif @@pass["ヒーラー"].include?(name) == true + @status = {"Lv" => "\e[92m\"HEALER\"\e[m", + "EXP" => 0, + "処理用EXP" => 0, + "LvUP必要EXP" => 8, + "前回のLvUP必要EXP" => 0, + "G" => 30, + "HP" => 100000000, + "MP" => 3, + "ATS" => 8, + "MAT" => 5, + "DEF" => 5, + "MDF" => 3, + "DEX" => 20, + "AGI" => 15, + "LUK" => 1 + } + @attack << "Command:何もしない" + @attack << "回復Command:Soul Regeneration" + puts('コード"ヒーラー"を認証しました') + puts("スーパーアカウントの使用を許可します") + x = "OK" + redo + end + end + + if x.nil? == true + @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") + 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 + print("\n") + puts("="*50) + printf("name:%s 役職:%s Lv.%s ",@status["name"],@status["役職"],@status["Lv"]) + if @status["EXP"].nil? == false + printf("EXP:%d %dG\n",@status["EXP"],@status["G"]) + printf("HP:%d/%d MP:%d/%d ",@status["HP"],@status["MAXHP"],@status["MP"],@status["MAXMP"]) + else + print("%sG\n",@status["G"]) + print("HP:%s MP:%s",@status["HP"],@status["MP"]) + end + printf("ATS:%s MAT:%s DEF:%s MDF:%s DEX:%s AGI:%s LUK:%s",@status["ATS"],@status["MAT"],@status["DEF"],@status["MDF"],@status["DEX"],@status["AGI"],@status["LUK"]) + print("\n") + puts("="*50) + print("\n") + end + + 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 game + print("戦闘") + dot(["="]*20,0.01) + print("\n") + @@enemy["HP"][@teki] = @@enemy["MAXHP"][@teki] + printf("%s\e[mが現れた",@@enemy["name"][@teki]) + turn = rand(2) + @result = "戦闘" + while true + 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 ture == 0 + myturn + if syouhai == true + break + end + enemyturn + else + enemyturn + if syouhai == true + break + end + myturn + end + end + if syouhai == true + break + end + end + if @status["HP"] <= 0 + @result = "負け" + elsif @@enemy["HP"][@teki] <= 0 + @result = "勝ち" + end + end + + def enemyturn + @turn = "敵" + 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 + 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] + 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 && @@pass["スーパーアカウント"].include?(@status["Lv"]) == true + 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 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 + end + end + end +end + +x = RPG.new +x.first diff --git a/RPG/enemy.csv b/RPG/enemy.csv new file mode 100644 index 0000000..d2d77f4 --- /dev/null +++ b/RPG/enemy.csv @@ -0,0 +1,10 @@ +name,番号,HP,MP,ATS,MAT,DEF,MDF,DEX,AGI,LUK,G,EXP,仮name,仮HP,仮MP,仮ATS,仮MAT,仮DEF,仮MDF,仮DEX,仮AGI,仮LUK,仮G,仮EXP,コメント +リトルスライム,0,12,8,5,0,7,4,12,8,1,5,3,ダンジョンボス:[91mキングスライム,100,80,40,30,50,50,80,35,25,60,40, +スライム,1,25,12,10,8,15,10,28,18,15,12,12,|[93mゴールデンスライム,30,30,15,10,30,30,60,20,15,45,20, +デーモンビースト,2,20,5,6,0,10,7,30,10,3,10,7,メタルスライム,30,30,15,10,50,50,60,20,15,20,25, +黒い影,3,15,20,0,8,15,20,40,20,5,15,12,,,,,,,,,,,,, +|[93mリトルゴールデンスライム,4,15,15,8,0,25,25,8,8,5,30,12,ストーンゴーレム,40,40,20,20,30,25,25,30,15,20,20, +エリアボス:|[91mプリーンビーストロード,5,40,20,18,10,25,20,60,30,10,40,35,,,,,,,,,,,,, +リトルグリーンスライム,6,20,20,8,8,10,8,30,20,8,8,6,八咫烏(やたがらす),,,,,,,,,,,,三本足のからす鳥海山の神(大物忌神)の遣い +ウッドゴーレム,7,25,25,10,10,18,15,25,25,10,12,12,霊鳥,2236,,,,,,,,,,,鳥海山には霊鳥が住むと言われている +エリアボス:|[91mジャイアントウッドゴーレム,8,80,60,30,20,35,30,50,45,20,60,50,,,,,,,,,,,,, diff --git a/RPG/gameover.png b/RPG/gameover.png new file mode 100644 index 0000000..56184e8 --- /dev/null +++ b/RPG/gameover.png Binary files differ diff --git a/RPG/skill.csv b/RPG/skill.csv new file mode 100644 index 0000000..0f8d36a --- /dev/null +++ b/RPG/skill.csv @@ -0,0 +1,2 @@ +5 +剣技:疾風斬り diff --git a/dokuzite-ma.rb b/dokuzite-ma.rb new file mode 100755 index 0000000..be0cdeb --- /dev/null +++ b/dokuzite-ma.rb @@ -0,0 +1,128 @@ +#!/usr/bin/env ruby +# -*- coding: utf-8 -*- + +#アイディア========= +# +# +# +# +# +# +# +# +# +# +#アイディア========= + +#プログラム========== +require 'csv' +trivia = CSV.read("trivia.csv") +puts("豆知識辞典") +x = [] +for i in trivia + x << i[0] +end +y = 0 +for i in x + printf("%s(%d)",i,y) + y += 1 +end +z = -1 +while z < 0 || x.length >= z + z = gets.chomp.to_i +end +puts trivia[z] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#プログラム========= diff --git a/enemy.csv b/enemy.csv deleted file mode 100644 index 91ae325..0000000 --- a/enemy.csv +++ /dev/null @@ -1,10 +0,0 @@ -name,番号,HP,MAXHP,MP,MAXMP,ATS,MAT,DEF,MDF,DEX,AGI,LUK,G,EXP -リトルスライム,0,12,12,8,8,5,0,7,4,12,8,1,5,3 -スライム,1,25,25,12,12,10,8,15,10,28,18,15,12,12 -デーモンビースト,2,20,20,5,5,6,0,10,7,30,10,3,10,7 -黒い影,3,15,15,20,20,0,8,15,20,40,20,5,15,12 -|[93mリトルゴールデンスライム,4,15,15,15,15,8,0,25,25,8,8,5,30,12 -エリアボス:|[91mプリーンビーストロード,5,40,40,20,20,18,10,25,20,60,30,10,40,35 -リトルグリーンスライム,6,20,20,20,20,8,8,10,8,30,20,8,8,6 -ウッドゴーレム,7,25,25,25,25,10,10,18,15,25,25,10,12,12 -エリアボス:|[91mジャイアントウッドゴーレム,8,80,80,60,60,30,20,35,30,50,45,20,60,50 diff --git a/gameover.png b/gameover.png deleted file mode 100644 index 56184e8..0000000 --- a/gameover.png +++ /dev/null Binary files differ diff --git a/last/j2114_last.rb b/last/j2114_last.rb new file mode 100755 index 0000000..a60f79f --- /dev/null +++ b/last/j2114_last.rb @@ -0,0 +1,138 @@ +#!/usr/bin/env ruby +# -*- coding: utf-8 -*- + +#アイディア========= +# +# +# +# +# +# +# +# +# +# +#アイディア========= + +#プログラム========== +require 'csv' #CSVファイルを使えるようにしている +trivia = CSV.read("trivia.csv") #CSVファイルを読み込んでる +x = 0 +while x < trivia.length + trivia[x].compact! #nilってるのを消してる + x += 1 +end +p trivia +while true + puts("豆知識辞典") + list = [] + for i in trivia + list << i[0] + end + list << "プログラムを終了させる" + x = 0 + for i in list + printf("%s(%d)",i,x) + x += 1 + end + select = -1 + print("\n") + while select < 0 || select >= list.length + print("選択:") + select = gets.chomp.to_i + end + if list[select] == "プログラムを終了させる" + puts("プログラムを終了します") + break + end + print("\n") + puts("="*50) + for i in trivia[select] + puts i + end + puts("="*50) + print("\n") +end + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#プログラム=========138 diff --git a/last/trivia.csv b/last/trivia.csv new file mode 100644 index 0000000..80975c9 --- /dev/null +++ b/last/trivia.csv @@ -0,0 +1,3 @@ +あとがき,プレイして頂きありがとう, +スタッフロール,制作:村井侑平,作案:村井侑平 +プログラム何B,Rubyでプログラムを書く時,半角だと1B 全角だと2B diff --git a/nowRPG.rb b/nowRPG.rb deleted file mode 100755 index 2f88760..0000000 --- a/nowRPG.rb +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env ruby -# -*- coding: utf-8 -*- - -class RPG - def initialize - @@story = {"ゲーム説明" => ["ゲーム説明","このゲームはメニューで行動を選択して遊びます", - "ステータスを見る・宿屋へ行く・武器屋へ行く・教会へ行く・探索へ行くの中から好きなのを選びます", - "ステータスを見るは今の自分のステータスを見ることができます", - "HP=体力 MP=魔力・魔法防御力 ATS=攻撃力 MAT=魔法攻撃力 DEF=防御力 DEX=素早さ AGI=器用さ LUK=運", - "宿屋はGを支払うとHP・MPが回復します", - "武器屋は武器・防具を購入することができます", - "教会はセーブをすることができます", - "探索は魔物の生息地に行き 戦いをします", - "戦いは行動を選択して魔物を倒します", - "死んでしまったら'GAMEOVER'でGを失い村・街からやり直しです", - "目標は魔王を倒すこと!", - "じゃぁクリア目指して頑張ってね", - "※このゲームは共同制作作品です"], - - "スタッフロール" => ["スタッフロール(クレジットタイトル)","システム","村井侑平 澤田羽衣", - "システムアドバイザー","佐藤隆之助 阿部光峻", - "広瀬雄二様 東北公益文科大学の皆様", - "シナリオ","村井侑平 高橋真翔 佐藤風斗 佐藤然", - "シナリオアドバイザー","佐藤隆之助 澤田羽衣 疋田琉莉 阿部光峻", - "グラフィック","村井侑平", - "この作品に関わった すべての方に感謝の意を申し上げます", - "制作","「#みんなでゲームを作ろう」の会"], - - "ストーリー1" => ["\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[96m_me_:すみません ここが どこか わかりますか", - "\e[2m村人:何いってるんだい?", - "\e[2m村人:ここは「パクス村」ディーヴァス川のほとりにある小さな農村さ", - "\e[2m村人:ここが初めてなら注意しておくけど「ポルタ平原」には魔物が出るから用意なしには行くなよ", - "\e[2m村人:まぁ旅 人なら宿屋で休んでいきな", - "\e[96m_me_:あっ _jibun_ お金持ってないんですけど", - "\e[2m村人:なんだお前さん一文無しかよ", - "\e[2m村人:しかたねーなー ここで会ったのも何かの縁だ", - "\e[2m村人:30Gやるから あとは魔物でも倒して自分で稼げ", - "(_me_は村人から30Gをもらった)", - "\e[2m村人:じゃぁな", - "\e[96m_me_:とりあえずポルタ平原を探索しようかな"] - } - - @@monster = ["スライム","デーモンビースト","\e[93mゴールデンスライム","黒い影"] - - @@enemy = {"HP" => [12,,15,15,10], - "MAXHP" => [12,15,15,10], - "MP" => [8,5,20,15], - "MAXMP" => [8,5,20,15], - "ATS" => [4,,10,6,0], - "MAT" => [0,0,0,8], - "DEF" => [3,10,30,15], - "DEX" => [10,25,8,35], - "AGI" => [8,15,8,25], - "LUK" => [1,1,1,3], - "EXP" => [3,7,30,13], - "攻撃" => ["たいあたり","突進","たいあたり","Error"], - "魔法" => ["Error","Error","Error","闇の刃"] - } - - @@probability = [0]*91 + [1]*5 + [3]*3 + [2]*1,[0]*82 + [1]*10 + [3]*5 + [2]*3,[0]*72 + [1]*15 + [3]*8 + [2]*5,[0]*52 + [1]*25 + [3]*15 + [2]*8,[0]*25 + [1]*40 + [3]*25 + [2]*10 - - @@choices = {"プレイetc" => ["プレイ","ゲーム説明","クレジットタイトル"], - "性別" => ["男","女"], - "一人称" => ["俺","僕","私"], - "行動" => ["ステータスを見る","アイテムを見る","装備を見る","宿屋に行く","武器屋に行く","教会に行く","探索に行く"], - "進むor戻る" => ["深部に進む","拠点に戻る"] - } - end - def initial - x = nil - name = "" - while name == "" - print("name…") - name = gets.chomp - if name == "administrator" || name == "管理者" - @status{["name"] => name, - ["Lv"] => "\e[93mSPECIAL\e[m", - ["HP"] = 1000, - ["MAXHP"] = 1000, - ["MP"] = 1500, - ["MAXMP"] = 1500, - ["ATS"] = 500, - ["MAT"] = 300, - ["DEF"] = 400, - ["DEX"] = 500, - ["AGI"] = 400, - ["LUK"] = 100 - } - x = 0 - redo - end - end - if x.nil? == true - @status{["name"] => name, - ["Lv"] => 1, - ["EXP"] => 0, - ["処理用EXP"] => 0, - ["LvUP必要EXP"] => 8, - ["前回のLvUP必要EXP"] => 0, - ["HP"] = 1000, - ["MAXHP"] = 1000, - ["MP"] = 1500, - ["MAXMP"] = 1500, - ["ATS"] = 500, - ["MAT"] = 300, - ["DEF"] = 400, - ["DEX"] = 500, - ["AGI"] = 400, - ["LUK"] = 100 - } - end - while x <= @@choices["性別"].length - printf (%s(%d),@@choices["性別"][x],x) - end - end -end - - if select == "プレイ" - name = "" - puts("PL名を決めてください") - while name == "" #この辺少し変だから真似はよく見てやって - print("name…") - name = gets.chomp - if name == "administrator" || name == "管理者" #スーパーアカウント(^_^;) - lv[0] = "\e[93mSPECIAL\e[m" - $ability["HP"] = 1000 - $ability["MP"] = 1500 - $ability["ATS"] = 500 - $ability["MAT"] = 300 - $ability["DEF"] = 400 - $ability["DEX"] = 500 - $ability["AGI"] = 400 - $ability["LUK"] = 100 - $current["HP"] = $ability["HP"] - $current["MP"] = $ability["MP"] - $g = 100000000 - puts("スーパーアカウントの使用を許可します") - puts("PL名を決めてください") - redo - end - end - name = name.chomp - $status << name - $status << question("性別を決めてください",q1) - $status << question("一人称を決めてください",q2) - end diff --git a/picturetest.rb b/picturetest.rb index d05e3ea..4fa0aae 100755 --- a/picturetest.rb +++ b/picturetest.rb @@ -2,5 +2,6 @@ # -*- coding: utf-8 -*- pid = spawn "display -geometry +10+20 gameover.png" -sleep(10) -Process.kill(:INT,pid) +sleep(3) +Process.kill +p "1" diff --git a/skill.csv b/skill.csv deleted file mode 100644 index 0f8d36a..0000000 --- a/skill.csv +++ /dev/null @@ -1,2 +0,0 @@ -5 -剣技:疾風斬り diff --git a/zikken.png b/zikken.png deleted file mode 100644 index f64c475..0000000 --- a/zikken.png +++ /dev/null Binary files differ diff --git a/zikken.rb b/zikken.rb index fb84290..24a4e6f 100755 --- a/zikken.rb +++ b/zikken.rb @@ -3,10 +3,14 @@ require 'csv' -data = CSV.read("実験.csv",:headers => true,:converters => :numeric) +x = CSV.read("実験.csv",:headers => true,:converters => :numeric) -p data["実験"][1] +y = x["実験"] +data = {"実験" => y} -data["実験"][1] -= 100 +p data["実験"][0] -p data["実験"][1] +data["実験"][0] -= 1 + +p data["実験"][0] + diff --git a/zikkengazou.png b/zikkengazou.png deleted file mode 100644 index 34e3cdb..0000000 --- a/zikkengazou.png +++ /dev/null Binary files differ diff --git a/zinro/.jpg b/zinro/.jpg new file mode 100644 index 0000000..56b5f2d --- /dev/null +++ b/zinro/.jpg Binary files differ diff --git a/zinro/ZinroGameRandom.rb b/zinro/ZinroGameRandom.rb new file mode 100755 index 0000000..94a550b --- /dev/null +++ b/zinro/ZinroGameRandom.rb @@ -0,0 +1,319 @@ +#!/usr/bin/env ruby +# -*- coding: utf-8 -*- + + + +class RANDOM + + def initialize + @@choices = {"初期設定" => ["役職分けスタート","GM決め","昼夜スタート","詳細設定","リセット","プログラムを終了"], + "役職追加" => ["役職を追加","参加者を追加","ホームに戻る"], + "リセット" => ["すべて","役職","参加者","戻る"]} + #"役職を削除","役職を確認","参加者を確認","参加者を削除", + @position = [] + @name = [] + @gazo = spawn "display -geometry +0+0 タイトル.jpg" + end + + def question(choices,mold = "moji") + x = 0 + @select = -1 + if mold == "hyozi" + while x < choices.length + printf("%s ",choices[x]) + print("\e[m") + x += 1 + end + else + while x < choices.length + printf("%s(%d) ",choices[x],x) + print("\e[m") + x += 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 @select + elsif mold == "kazu" + return @select + else + puts("Error") + 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 tuika + while true + print("設定:") + a = gets.chomp + if not a == "" + return a + end + end + end + + def ninzu + while true + print("設定:") + number = ["1","2","3","4","5","6","7","8","9","0"] + n = gets.chomp + x = n.split("") + for i in x + if number.include?(x) + redo + end + end + return n.to_i + end + end + + def program + while true + puts("ZinroGameRandomProgrm") + question(@@choices["初期設定"]) + print("\n") + if @select == "詳細設定" + while true + question(@@choices["役職追加"]) + if @select == "役職を追加" + x = [] + puts("役職名を教えてください") + x << tuika + puts("人数はどうしますか?") + x << ninzu + @position << x + elsif @select == "役職を削除" + p "製作途中" + redo + z = @position + a = [] + while not z == [] + a << z.shift + b = a[-1] + z.delete(b) + end + elsif @select == "参加者を追加" + puts("参加者の名前を教えてください") + @name << tuika + elsif @select == "参加者を削除" + y = @name+["戻る"] + question(@name+["戻る"]) + @name.delete(@select) + elsif @select == "役職を確認" + p @position + elsif @select == "参加者を確認" + p @name + elsif @select == "ホームに戻る" + break + end + end + elsif @select == "役職分けスタート" + if @position == [] + puts("役職が設定されていません") + redo + end + y = [] + for i in @position + y << [i[0]]*i[1].to_i + end + y.flatten! + n = @name + n.shuffle! + x = 0 + if y.length > n.length + puts("役職数が参加者人数より多いです") + redo + end + + while not y.length == @name.length + y << "村人" + end + while not x >= n.length + printf("%s:%s\n",y[x],n[x]) + x += 1 + end + puts("Enterを押せば消えます") + gets + puts("\e[2J") + elsif @select == "リセット" + question(@@choices["リセット"]) + if @select == "すべて" + @position.clear + @name.clear + elsif @select == "役職" + @position.clear + elsif @select == "参加者" + @name.clear + end + elsif @select == "昼夜スタート" + puts("昼は何分?") + hiru = ninzu + puts("夜は何分?") + yoru = ninzu + puts("入力するとき ENDと入力すると終了 OKと入力すると続行 人狼と入力すると人狼の勝利 村人と入力すると村人の勝利 です") + if "END" == gets.chomp + redo + end + while true + gazo = spawn "display -geometry +0+0 昼のターン.jpg" + puts("昼のターンスタート") + x = Time.new+(hiru*60) + while Time.new < x + printf("残り%d秒\n",x-Time.new) + sleep(1) + print("\e[2J") + end + Process.kill(:INT,gazo) + puts("昼のターンが終了しました") + puts("入力してください") + while true + x = gets.chomp + y = nil + if x == "END" + y = "終わる" + break + elsif x == "人狼" + y = "人狼" + elsif x == "村人" + y = "村人" + elsif x == "OK" + break + else + redo + end + end + if y == "終わる" || y == "人狼" || y == "村人" + break + end + puts("投票と退場が完了したら入力してください") + gazo = spawn "display -geometry +0+0 投票画面.jpg" + while true + x = gets.chomp + y = nil + if x == "END" + y = "終わる" + break + elsif x == "人狼" + y = "人狼" + elsif x == "村人" + y = "村人" + elsif x == "OK" + break + else + redo + end + end + if y == "終わる" || y == "人狼" || y == "村人" + break + end + Process.kill(:INT,gazo) + gazo = spawn "display -geometry +0+0 夜のターン.jpg" + puts("夜のターンスタート") + x = Time.new+(yoru*60) + while Time.new < x + printf("残り%d秒\n",x-Time.new) + sleep(1) + print("\e[2J") + end + Process.kill(:INT,gazo) + puts("夜のターンが終了しました") + puts("入力してください") + while true + x = gets.chomp + y = nil + if x == "END" + y = "終わる" + break + elsif x == "人狼" + y = "人狼" + elsif x == "村人" + y = "村人" + elsif x == "OK" + break + else + redo + end + end + if y == "終わる" || y == "人狼" || y == "村人" + break + end + gazo = spawn "display -geometry +0+0 襲撃.jpg" + puts("襲撃を行ってください") + puts("入力してください") + while true + x = gets.chomp + y = nil + if x == "END" + y = "終わる" + break + elsif x == "人狼" + y = "人狼" + elsif x == "村人" + y = "村人" + elsif x == "OK" + break + else + redo + end + end + if y == "終わる" || y == "人狼" || y == "村人" + break + end + Process.kill(:INT,gazo) + end + if y == "人狼" + gazo = spawn "display -geometry +0+0 人狼陣営の勝利.jpg" + Process.kill(:INT,gazo) + elsif y == "村人" + gazo = spawn "display -geometry +0+0 村人陣営の勝利.jpg" + Process.kill(:INT,gazo) + end + elsif @select == "GM決め" + if @name == [] + puts("参加者が設定されていません") + redo + end + puts("今回のGMは何人ですか?(GMに選ばれた人は参加者から消去されます)") + x = ninzu + if x > @name.length + puts("参加者の人数より多いです") + redo + end + z = 0 + while not x == z + y = @name.shuffle!.shift + printf("GM:%s\n",y) + z += 1 + end + elsif @select == "プログラムを終了" + Process.kill(:INT,@gazo) + return + end + end + end +end + +x = RANDOM.new + +x.program diff --git a/zinro/picturetest.rb b/zinro/picturetest.rb new file mode 100755 index 0000000..52c67de --- /dev/null +++ b/zinro/picturetest.rb @@ -0,0 +1,6 @@ +#!/use/bin/env ruby +# -*- coding: utf-8 -*- + +pid = spawn "display -geometry +10+20 タイトル-1024x576.jpg" +sleep(10) +Process.kill(:INT,pid) diff --git "a/zinro/\343\202\277\343\202\244\343\203\210\343\203\253.jpg" "b/zinro/\343\202\277\343\202\244\343\203\210\343\203\253.jpg" new file mode 100644 index 0000000..08bb579 --- /dev/null +++ "b/zinro/\343\202\277\343\202\244\343\203\210\343\203\253.jpg" Binary files differ diff --git "a/zinro/\344\272\272\347\213\274\351\231\243\345\226\266\343\201\256\345\213\235\345\210\251.jpg" "b/zinro/\344\272\272\347\213\274\351\231\243\345\226\266\343\201\256\345\213\235\345\210\251.jpg" new file mode 100644 index 0000000..450bdea --- /dev/null +++ "b/zinro/\344\272\272\347\213\274\351\231\243\345\226\266\343\201\256\345\213\235\345\210\251.jpg" Binary files differ diff --git "a/zinro/\345\244\234\343\201\256\343\202\277\343\203\274\343\203\263.jpg" "b/zinro/\345\244\234\343\201\256\343\202\277\343\203\274\343\203\263.jpg" new file mode 100644 index 0000000..97beb63 --- /dev/null +++ "b/zinro/\345\244\234\343\201\256\343\202\277\343\203\274\343\203\263.jpg" Binary files differ diff --git "a/zinro/\346\212\225\347\245\250\347\224\273\351\235\242.jpg" "b/zinro/\346\212\225\347\245\250\347\224\273\351\235\242.jpg" new file mode 100644 index 0000000..42779e4 --- /dev/null +++ "b/zinro/\346\212\225\347\245\250\347\224\273\351\235\242.jpg" Binary files differ diff --git "a/zinro/\346\230\274\343\201\256\343\202\277\343\203\274\343\203\263.jpg" "b/zinro/\346\230\274\343\201\256\343\202\277\343\203\274\343\203\263.jpg" new file mode 100644 index 0000000..edaa0c2 --- /dev/null +++ "b/zinro/\346\230\274\343\201\256\343\202\277\343\203\274\343\203\263.jpg" Binary files differ diff --git "a/zinro/\346\235\221\344\272\272\351\231\243\345\226\266\343\201\256\345\213\235\345\210\251.jpg" "b/zinro/\346\235\221\344\272\272\351\231\243\345\226\266\343\201\256\345\213\235\345\210\251.jpg" new file mode 100644 index 0000000..474d5a3 --- /dev/null +++ "b/zinro/\346\235\221\344\272\272\351\231\243\345\226\266\343\201\256\345\213\235\345\210\251.jpg" Binary files differ diff --git "a/zinro/\350\245\262\346\222\203.jpg" "b/zinro/\350\245\262\346\222\203.jpg" new file mode 100644 index 0000000..961eecf --- /dev/null +++ "b/zinro/\350\245\262\346\222\203.jpg" Binary files differ diff --git "a/\345\256\237\351\250\223.csv" "b/\345\256\237\351\250\223.csv" index ff70221..2e78c31 100644 --- "a/\345\256\237\351\250\223.csv" +++ "b/\345\256\237\351\250\223.csv" @@ -1,3 +1,2 @@ 実験 -|[91mあ 1