1

小さなテキスト ベースのゲームを作成しています。ゲームを保存して、後でデータをロードしたいと考えています。ゲームに、すべての変数とその値を次のような形式で保存するテキスト ファイルを作成させることができました。

first_name = "Name"
last_name = "Last Name"
bank = 10000
...

ロードを選択すると、テキストが読み取られ、適切な変数が割り当てられるようになります。これはできますか?

4

4 に答える 4

1

他の回答で提案されているように、ファイルの評価や解析などのメタプログラミング手法を使用しない限り、ローカル変数でそれを行うことはできません。メタプログラミングのハックなしでそれを行いたい場合は、他のタイプの変数または定数を使用する必要があります。設定用にモジュール (特別なタイプの定数) を準備すると役立つ場合があります。

メインファイルで:

module Setting
  def self.set h; @h = h end
  def self.call @h end
end
load(path_to_setting_file)

設定ファイル:

Setting.set(
  first_name: "Name",
  last_name: "Last Name",
  bank: 10000,
)

メインファイルから呼び出すには:

Setting.call
# => {
  first_name: "Name",
  last_name: "Last Name",
  bank: 10000,
}

それが気に入らない場合は、YAML を使用する必要があります。

于 2013-10-20T03:16:41.250 に答える
1

最も速くて簡単な方法は、Marshalを使用することです。

# Save data
data = Marshal.dump(game_state)

# Load data
game_state = Marshal.load(data)

ゲーム データ スキーマが変化し続けることが予想される場合は、インスタンス変数を使用する代わりに、データをハッシュまたはHashie::Mashに保存することを検討してください。

于 2013-10-20T04:13:39.203 に答える
0

だいたい:

    variable_file = File.open("./myfile.txt")
    variable_file.each do |variable_line|
    variable_line.chomp!
    #split on " = "
    #gsub out the quotes
    #add to hash where name is key and value is value
    end
    #your program uses the hash to access the values
于 2013-10-20T02:29:17.180 に答える