Newer
Older
Ruby / newRPG / RPG.rb
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

require 'csv'
require './HERO'
require './Module_DICE'
require './Module_QUESTION'

class MAIN

  include DICE
  include QUESTION

  def initialize

    @@story = {"ゲーム説明" => ["ゲーム説明","このゲームはメニューで行動を選択して遊びます",
                                "ステータスを見る・宿屋へ行く・武器屋へ行く・教会へ行く・探索へ行くの中から好きなのを選びます",
                                "ステータスを見るは今の自分のステータスを見ることができます",
                                "HP=体力 MP=魔力  STR=筋力 MAT=魔法攻撃力 DEF=防御力 DEX=素早さ AGI=器用さ  LUK=運",
                                "宿屋はGを支払うとHP・MPが一定の割合回復します",
                                "武器屋は武器・防具を購入することができます",
                                "教会はセーブをすることができます",
                                "探索は魔物の生息地に行き 戦いをします",
                                "戦いは行動を選択して魔物を倒します",
                                "死んでしまったら'GAMEOVER'でGを一部失い村・街からやり直しです",
                                "目標は魔王を倒すこと!",
                                "じゃぁクリア目指して頑張ってね"],

                "目覚め" => ["\e[93;1mそれではゲームの世界を楽しんでください","\e[93;1mLet's Play! ","",
                             "酷い頭痛がした後、目が覚めると、そこは見知らぬ町--というほど大きくはなく、少し先を見れば柵が見え、村程度の大きさであることがわかる",
                             "建物は、そのほとんどが木材でできており、技術が発達した現代では、あまり見ない光景だ",
                             "さらに、道行く人々は皆、ファンタジーの中世風の格好をしていて、現代の光景とは程遠い",
                             "目が覚めたら、見覚えもない、故郷、そして現代とは全く違う町並みの村にいる",
                            ],
                "ポルタ村" => ["\e[96m村人:あっえっ...ここはポルタ村つって、田舎の辺鄙な村だよ",
                               "\e[96m村人:まぁ、土壌にも恵まれ自然豊かな森や川が近くにあって、良いところだよ",
                               "\e[96m村人:見たところ、お前さんは旅人だろう","\e[96m村人:どこから来たんだ","気がついたらここにいて、困っていると言うと、村人は難しい顔をした","\e[96m村人:そいつぁー大変だな","\e[96m村人:見たところ、この村の住民ではなさそうだが、町に行けばなにか分かるかもしれんが、今はな〜","村人はしばらく考え、結論を出す","\e[96m村人:今ちぃーとばかし町に行けない状況でな、しばらく泊めてやるから村に滞在しておけ","\e[96m村人:もちろん金は取らんから安心しな","見知らぬ地に置かれ、頼る人も居なかったので、彼のお世話になることにした","\e[96m村人:よし、俺はリゲルだ","\e[96mリゲル:よろしくな"]}
    @@response = {"目覚め" => ["戸惑いながらも、自分が今、実に不可解で摩訶不思議な状況に置かれていることを理解するだろう",
                               
                                 ["冷静になり情報収集をする","混乱しフリーズする","パニックになり錯乱する"],
                                 [["村人に声をかけ、ここはどこなのかを聞く"],
                                  ["茫然自失とし、しばらくその場を動かないでいると、不審に思った村人が声をかけてくる",
                                   "\e[96m村人:お前さん、何やらボーとしていたようだが大丈夫か?",
                                   "我を取り戻し、村人に、ここがどこなのかを聞く"],
                                  ["あまりに浮世離れした現在の状況に酷い恐怖を覚え、錯乱する",
                                   "心配になった村人が近くに寄ってくる",
                                   "\e[96m村人:おっお前さん、大丈夫かい!?----",
                                   "しばらくして落ち着いたのか冷静さが戻ってくる",
                                   "心配し近くに来てくれた村人に、ここがどこなのかを聞く"]]
                              ]}

        @@choices = {"プレイetc" => ["はじめから","つづきから","ゲーム説明"],
                     "ロード" => ["ロードする","タイトルに戻る"],
                     "メニュー" => ["ステータスを見る","アイテムを見る","装備を見る","宿屋に行く","武器屋に行く","アイテムショップに行く","教会に行く","探索に行く","Command"],
                     "使うor使わない" => ["使う","使わない"],
                     "宿屋" => ["泊まる10G","泊まらない"],
                     "教会" => ["祈りを捧げる[セーブ]"],
                     "バトル" => ["攻撃","アイテム","逃げる"],
                     "進むor戻る" => ["深部に進む","拠点に戻る"],
                     "ステータスチェック" => ["ステータス省略表示","スキル表示","全ステータスの表示"]
                    }

        @map = {"area_list" =>["ポルタ平原"],
                "city_list" => ["ポルタ村"],
                "city_map" => {"ポルタ村" => ["リゲルの家"]
                              }
               }
        
  end

  def talk(story,response = "なし")
    print("\n")
    if  story != nil && response != "入力"
      for i in @@story[story]
        puts i
        print("\e[m")
        gets
      end
      if not response == "なし"
        reaction(story)
      end
    elsif response == "入力"
      for i in story
        puts i
        print("\e[m")
        gets
      end
    else
      puts"talkメソッドでバグ"
    end
  end


  def reaction(story)
    x = @@response[story]
    puts x[0]
    print"\e[m"
    gets
    talk(x[2][question(x[1],"suji")],"入力")
  end

  def frist
    while true
      @select = question(@@choices["プレイetc"],"moji")
      if @select == "はじめから"
        puts""
        puts"初期設定"+"="*42
        puts"名前を設定してください"
        hero=HERO.new(text_get("名前"))
        puts
        talk("目覚め","あり")
        talk("ポルタ村")
      end
      
    end
  end

  def text_get(name)
    puts
    puts"#{name}はどうしますか?"
    while true
      print("#{name}:")
      x = gets.chomp
      if x == ""
        redo
      else
        puts
        puts("#{x}で良いですか?")
        @select = question(["YES","NO"],"moji")
        puts
        if @select == "YES"
          return x
        elsif @select == "NO"
          redo
        end
      end
    end
  end

end


x=MAIN.new
x.frist