diff --git a/R.rb b/R.rb new file mode 100755 index 0000000..a56b38e --- /dev/null +++ b/R.rb @@ -0,0 +1,209 @@ +#! /usr/bin/env ruby +# -*- coding: utf-8-*- +Encoding.default_external = 'utf-8' +require"csv" +data=CSV.read("data.csv",headers:true) +data.each{|row| + printf("あなたのレベルは%i武器は%s防具は%s\n",row["けいけんち"].to_i,row["ぶき"],row["ぼうぐ"])} + + money = 0 + mone = 0 + w = 0 + +def doko(z) + if z==1 + puts"" + elsif z==2 + puts"" + + else + print"行けないよ\n" + end + +end + + +def hp(q,money) + if q==1 + money -= 200 + hp_bougu=10 + + elsif q==2 + money -= 100 + hp_bougu=7 + + elsif q==3 + money -= 50 + hp_bougu=5 + + else + print"その防具はごめん売ってないんだ\n" + print"1.2.3から選んでね\n" + + end + return hp_bougu,money + +end + +def power(a,mone) + + if a==1 + mone -= 700 + power_buki=20 + + + elsif a==2 + mone -= 500 + power_buki=15 + + elsif a==3 + mone -= 300 + power_buki=10 + else + print"その剣はごめん売ってないんだ\n" + print"1.2.3から選んでね!\n" + end + return power_buki,mone + +end + +def ou(s) + if s==1 + print"行くのか!\n" + print"ならこれを持ってけ\n" + print"-勇者の剣をゲットした-\n" + power_ken=100 + else + print"どっち" + end + return power_ken +end + +def uo(w) + if w==2 + puts"行かぬのか" + puts"これで身でも守っとれ" + puts"-勇者の盾をゲットした-" + power_tate=100 + + else + print"どっち?" + end + hp_tate +end + +print <<~setumei +<ゲーム説明>(約15秒) +このゲームでは、どこに行くかで決まります。 +何かをするときは表示されている番号を入力してください +(主)=主人公 ガル=お金 +これは魔王を倒すことが目的です +頑張ってください +setumei +sleep(15) +puts" + + +" +puts"名前を決めてね!" +nama=gets.chomp +puts"性別を決めてね! + 1.男 + 2.女" +seibetu=gets.chomp + +puts"(主)ここはどこだ" +sleep(2) +puts"(主)確か家で寝てて・・・" +sleep(2) +puts"(主)誰かが入ってきて刺されたんんだ!" +sleep(2) +puts"(主)でもなんでこんなところに?" +sleep(2) +puts"(主)まさかいま話題の転生か!" +sleep(2) +puts"(主)一度はアニメとかみたいにやってみたかったんだよな。" +sleep(2) +puts"(謎の男)お前見ない顔じゃな" +sleep(2) +puts"(謎の男)敵ではなさそうじゃ" +sleep(2) +puts"(村長)名を名乗れ" + +printf("(主)%sといいます。\n",name) +sleep(2) +printf("(謎の男)%sかなかなか興味深い名だな。\n",name) +sleep(2) +puts"(謎の男)なんにもないだろ" +sleep(2) +puts"(謎の男)これやる" +print"-村長から1000ガルもらった。-\n" +sleep(2) +puts"(謎の男)これで少しは生活してくれ" +sleep(2) +puts"(謎の男)すぐ近くに城があるから、そこに行ってると良いぞ" +sleep(2) + +money += 1000 +while true + puts"-------------------------------------------" + puts"どこ行く?" + puts"1.城" + puts"2.防具屋" + ddo=gets.to_i + + doko(ddo) + + if ddo==1 + puts"(王)何だ?" + sleep(1) + puts"(主)男に言われてきました" + sleep(2) + puts"(王)まさか魔王討伐に行ってくれるのか" + puts"1.行く!" + puts"2.行かない" + iku=gets.chomp.to_i + + ou(iku) + printf("ステータスは%dだよ。\n",ou) + end + + + if ddo==2 + + while true + puts"防具" + puts"1.金の鎧700ガル 2.医師の鎧500ガル 3.動の鎧300ガル" + bougu=gets.to_i + puts"武器" + puts"1.剣200ガル 2.斧100ガル 3.ツルハシ50ガル" + buki=gets.to_i + + power_buki,mone=power(buki,mone) + hp_bougu,money=hp(bougu,money) + + p bougu,buki + if bougu <= 4 + break + + elsif bougu >= 3 + redo + + elsif buki <= 4 + break + + elsif buki >= 3 + print"その剣はごめん売ってないんだ\n" + redo + + end + printf("ステータスは、power%d,hp%dです。\n",power_buki,hp_bougu) + end + end +end + + + + + + diff --git a/RPG.rb b/RPG.rb old mode 100755 new mode 100644 index 32835c7..bea9db0 --- a/RPG.rb +++ b/RPG.rb @@ -1,210 +1,611 @@ -#! /usr/bin/env ruby -# -*- coding: utf-8-*- +#!/usr/bin/env ruby +# -*- coding: utf-8 -*- -money = 0 -mone = 0 -w = 0 +#変数名の最初は大文字NG +ability = [20,3,8,5,5,20,15,1] #能力値最大 +#HP(0体力)MP(1魔力)ATS(2攻撃力)MAT(3魔法攻撃力)DEF(4防御力)DEX(5素早さ)AGI(6器用さ)LUK(7運) -def doko(z) - if z==1 - puts"城に行くよ" +current = [20,3] #現在の能力値 +#現在のHPとMP - elsif z==2 - puts"" - - else - print"行けないよ\n" +lv = [1,0,0] #レベル関連 +#Lv(レベル)EXP(経験値) + +lvup = [0,8] + +g = [30] #お金(Gold) + +count = [0,0,0,0] #0=バトル数1=勝利数2=敗北数3=逃走数 + +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]] #攻撃の詳細 + +monster = ["スライム","デーモンビースト","\e[93mゴールデンスライム","黒い影"] #モンスター名 + +enemy = [[12,12,8,8,4,0,3,15,10,1,3,"突進","Error"],[15,15,5,5,10,0,5,30,18,1,7,"突進","Error"], + [12,12,20,20,6,0,30,10,10,1,30,"突進","Error"],[8,8,15,15,0,8,20,35,25,3,13,"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 +#モンスターの出現確率 + +status = [] #PLが入力する[名前、性別、一人称etc.] + +item = [] #アイテム + +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(status,ability,current,nani,lv,g) #ステータスを表示するためのメソッド + x = 0 + puts" ステータス" + for i in nani[0] #i = ["名前","性別","一人称"] + printf("%s:%s ",i,status[x]) #名前性別一人称 + x += 1 end - + x = 0 + printf("Lv.%s ",lv[0]) + printf("EXP:%d ",lv[1]) + printf("所持金:%dG",g[0]) + print("\n") + for i in nani[2] + printf("%s:%d/%d ",i,ability[x],current[x]) + x += 1 + end + x = 2 + for i in nani[3] + printf("%s:%d ",i,ability[x]) + x += 1 + end + print("\n\n") end - -def hp(q,money) - if q==1 - money -= 200 - hp_bougu=10 - - elsif q==2 - money -= 100 - hp_bougu=7 - - elsif q==3 - money -= 50 - hp_bougu=5 - - else - print"その防具はごめん売ってないんだ\n" - print"1.2.3から選んでね\n" - +def question(situmon,list) #質問を出すメソッド + kaisu = 0 + select = -1 + while kaisu < list.length + printf("%s(%d)\n",list[kaisu],kaisu) + print("\e[m") + kaisu += 1 end - return hp_bougu,money - + while select < 0 || select >= list.length #回答の仕分け + print(situmon+":") + select = gets + if select == "\n" + redo + end + select = select.to_i + end + return list[select] #ただ見やすくしてる end -def power(a,mone) - - if a==1 - mone -= 700 - power_buki=20 - - - elsif a==2 - mone -= 500 - power_buki=15 - - elsif a==3 - mone -= 300 - power_buki=10 - else - print"その剣はごめん売ってないんだ\n" - print"1.2.3から選んでね!\n" +def query(situmon,list) #質問を出すメソッド + kaisu = 0 + select = -1 + while kaisu < list.length + printf("%s(%d)\n",list[kaisu],kaisu) + print("\e[m") + kaisu += 1 end - return power_buki,mone - + while select < 0 || select >= list.length #回答の仕分け + print(situmon+":") + select = gets + if select == "\n" + redo + end + select = select.to_i + end + return select #数字版 end -def ou(s) - if s==1 - print"行くのか!\n" - print"ならこれを持ってけ\n" - print"-勇者の剣をゲットした-\n" - power_ken=100 - else - print"どっち" +def dot(time,kaisu,ten) #「.」のためにいろいろ打ちたくなかったのメソッド + for i in 1..kaisu + sleep(time) + print(ten) end - power_ken end -def uo(w) - if w==2 - puts"行かぬのか" - puts"これで身でも守っとれ" - puts"-勇者の盾をゲットした-" - power_tate=100 - - else - print"どっち?" +def description(hanasi) #会話を出すためのメソッド + for i in hanasi + puts(i) + print("\e[m") + gets end - hp_tate end -print <<~setumei -<ゲーム説明>(約30秒) -このゲームでは、どこに行くかで決まります。 -何かをするときは表示されている番号を入力してください -(主)=主人公 ガル=お金 -これは魔王を倒すことが目的です -頑張ってください -setumei -sleep(30) -puts" +def story(hanasi,status) #物語のgetsをサボりたいのメソッド + 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 +end +def encounter(list) #何のモンスターが出現するか決めてくれるメソッド + return list[rand(list.length)] +end -" -puts"(主)ここはどこだ" -sleep(2) -puts"(主)確か家で寝てて・・・" -sleep(2) -puts"(主)誰かが入ってきて刺されたんんだ!" -sleep(2) -puts"(主)でもなんでこんなところに?" -sleep(2) -puts"(主)まさかいま話題の転生か!" -sleep(2) -puts"(主)一度はアニメとかみたいにやってみたかったんだよな。" -sleep(2) -puts"(謎の男)お前見ない顔じゃな" -sleep(2) -puts"(謎の男)敵ではなさそうじゃ" -sleep(2) -puts"(村長)名を名乗れ" -puts"名前を入力してね!" -name=gets.chomp -printf("(主)%sといいます。\n",name) -sleep(2) -printf("(謎の男)%sかなかなか興味深い名だな。\n",name) -sleep(2) -puts"(謎の男)なんにもないだろ" -sleep(2) -puts"(謎の男)これやる" -print"-村長から1000ガルもらった。-\n" -sleep(2) -puts"(謎の男)これで少しは生活してくれ" -sleep(2) -puts"(謎の男)すぐ近くに城があるから、そこに行ってると良いぞ" -sleep(2) - -money += 1000 -while true - puts"-------------------------------------------" - puts"どこ行く?" - puts"1.城" - puts"2.防具屋" - ddo=gets.to_i - - doko(ddo) - - if ddo==1&&w==0 - w+=1 - if w<=2 - - elsif w==1 - puts"(王)何だ?" - sleep(1) - puts"(主)男に言われてきました" - sleep(2) - puts"(王)まさか魔王討伐に行ってくれるのか" - puts"1.行く!" - puts"2.行かない" - iku=gets.chomp.to_i - - ou(iku) - +def enemyturn(probability,monster,enemy,ability,current) #敵のターンの一連の処理をまとめたメソッド + if probability > 3 + rand(100) + 1 + if probability > 2 + enemymagic(probability,monster,enemy,ability,current) + else + if rand(((enemy[probability][4]*1.5).round) + 1) < rand(enemy[probability][5] + 1) #左:物理攻撃 右:魔法攻撃 + enemymagic(probability,monster,enemy,ability,current) #魔法攻撃 + else + enemyattack(probability,monster,enemy,ability,current) #物理攻撃 + end end end end -if ddo==2 - if w==0 - puts"お前見ない顔だな" - puts"出ていけ!" - redo - elsif w==1 +def process(damage) #ダメージの表示をする + if damage < 1 + puts("攻撃失敗") + else + printf("%dダメージ\n",damage) #ダメージの表示 + end +end + +def battle(probability,monster,enemy,ability,current,item,status,nani,lv,g,attack,attackdetail,battleselect) #バトルの一連の処理をまとめた"すごい"メソッド + 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[0] <= 0 + return 0 #負け + elsif enemy[probability][0] <= 0 + return 1 #勝ち + elsif escape[0] == 0 + return 2 + end - while true - puts"防具" - puts"1.金の鎧700ガル 2.医師の鎧500ガル 3.動の鎧300ガル" - bougu=gets.to_i - puts"武器" - puts"1.剣200ガル 2.斧100ガル 3.ツルハシ50ガル" - buki=gets.to_i + if ability[5] < enemy[probability][7] #敵の方がDEXが早かったとき + enemyturn(probability,monster,enemy,ability,current) - power_buki,mone=power(buki,mone) - hp_bougu,money=hp(bougu,money) + if current[0] <= 0 + return 0 #負け + elsif enemy[probability][0] <= 0 + return 1 #勝ち + elsif escape[0] == 0 + return 2 + end - p bougu,buki - if bougu <= 4 - break + 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 - elsif bougu >= 3 + 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) + + 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 + 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) + printf("クリティカル") + 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) + puts("クリティカル!") + 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 = query("攻撃…",attack) + 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 + printf("%s!",attack[select]) + 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) + puts("クリティカル!") + damage = (damage*1.5).floor + end + else + damage = 0 + end + current[1] -= attackdetail[select][1] + current[0] -= attackdetail[select][2] + + 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(probability,monster,enemy,ability,current,item,status,nani,lv,g,attack,attackdetail,battleselect,searchselect,lvup,count) + sleep(rand(40)/10) + result = battle(probability,monster[probability],enemy,ability,current,item,status,nani,lv,g,attack,attackdetail,battleselect) + count[0] += 1 + if 0 == result + gameovre #GAMEOVREのメソッド + current[0] = ability[0] #HP全快 + current[1] = ability[1] #MP全快 + g[0] -= ((g[0]/10).floor + 10)#Gを減らす + if g[0] < 0 #Gが0未満になった場合 + g[0] = 0 + end + count[2] += 1 + return 0 + + elsif 1 == result + print("\n") + printf("%sに勝った!\n",monster[probability]) + print("\e[m") + x = enemy[probability][10] + ((enemy[probability][10]/10).floor * (rand(3) + 1) + (rand(3) + 1)) + lv[1] += x + lv[2] += x + g[0] += ((enemy[probability][10] + ((enemy[probability][10]/10).floor * (rand(3) + 1) + (rand(3) + 1)))*1.5).floor + level(lv,lvup,status,ability,current,nani,g) + count[1] += 1 + select = question("どうする",searchselect) + if select == "拠点に戻る" + return 0 + end + + elsif 2 == result + count[3] += 1 + return 0 + end + return 1 +end + +def appearance(monster,enemy,ability,current,item,status,nani,lv,g,attack,attackdetail,battleselect,kakuritu,n,limit,searchselect,lvup,count) + while not n == limit + probability = encounter(kakuritu[n]) + if 0 == game(probability,monster,enemy,ability,current,item,status,nani,lv,g,attack,attackdetail,battleselect,searchselect,lvup,count) + return 0 + end + n += 1 + if n == limit + puts("この先から禍々しい気配がする それでも進みますか?") + if "深部に進む" == question("どうする",searchselect) + #ボス用メソッド + 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(lv,lvup,status,ability,current,nani,g) + 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[0] = (ability[0]*1.065).ceil + ability[1] = (ability[1]*1.1).ceil + ability[2] = (ability[2]*1.04).ceil + ability[3] = (ability[3]*1.035).ceil + ability[4] = (ability[4]*1.05).ceil + ability[5] = (ability[5]*1.045).ceil + ability[6] = (ability[6]*1.045).ceil + ability[7] = lv[0] + lv[2] -= exp + if lv[0] == 50 + lv[0] = "50(MAX)" + ability[1] = 800 + ability[2] = 120 + ability[4] = 150 + ability[5] = 250 + ability[6] = 200 + end + end + end + status(status,ability,current,nani,lv,g) +end + +while true + puts("RPG") #ここから やっとメソッドじゃない + select = question("選択",sentaku) + if select == "ゲーム説明" + print("\n") + description(gamedescription) + redo + end + if select == "クレジットタイトル" + print("\n") + description(credit) + 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[0] = 1000 + ability[1] = 1500 + ability[2] = 500 + ability[3] = 300 + ability[4] = 400 + ability[5] = 500 + ability[6] = 400 + ability[7] = 100 + current[0] = ability[0] + current[1] = ability[1] + g[0] = 100000000 + puts("スーパーアカウントの使用を許可します") + puts("PL名を決めてください") redo - - elsif buki <= 4 - break - - elsif buki >= 3 - print"その剣はごめん売ってないんだ\n" + 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 + y = question("行動…",nani[4]) #yはPLの回答を拾ってくる + print("\n") + + if y == "ステータスを見る" + status(status,ability,current,nani,lv,g) + + elsif y == "宿屋に行く" + puts("宿屋の主人:一泊10Gだよ") + select = question("どうする",yadoya) + if select == "泊まる10G" + if g[0] >= 10 #10Gで泊まれる + g[0] -= 10 + print"Sleeing" + dot(0.5,3,".") + sleep(1) + print("\n") + current[0] = ability[0] + current[1] = ability[1] + puts("宿屋の主人:また 来いよ") #泊まるとHPとMPが全快する + + else + puts("宿屋の主人:お前 金持ってないのか!") + puts("宿屋の主人:ひやかしは帰れ!!") #お金が足りなかった場合 + end + else + puts("宿屋の主人:なんだ泊まんねーのかよ") #泊まんなかった場合 + end + print("\n") + + elsif y == "探索に行く" + select = question("どこに探索に行きますか",area) #どこに行くかの選択 + if select == "ポルタ平原" + n = 0 + limit = 5 + appearance(monster,enemy,ability,current,item,status,nani,lv,g,attack,attackdetail,battleselect,kakuritu,n,limit,searchselect,lvup,count) redo end end - printf("ステータスは、power%d,hp%dです。\n",power_buki,hp_bougu) end + redo end - - - - - diff --git a/data.csv b/data.csv new file mode 100644 index 0000000..50e2759 --- /dev/null +++ b/data.csv @@ -0,0 +1,2 @@ +kenn,ぶき,ぼうぐ +100,けん,よろい diff --git a/ge.rb b/ge.rb new file mode 100644 index 0000000..af77872 --- /dev/null +++ b/ge.rb @@ -0,0 +1,5 @@ +#/usr/bin/usv ruby +# -*- coding: utf-8 -*- +n=gets.to_i +sleep(n) +puts"終わり"