0

私は一般的にsnakeyamlとyamlに不慣れです。MUDの「部屋」に関する情報を保存するために必要です。

部屋のエントリは次のようになります。

room:
  id: 12
  entry: "Long string"
  description: "Longer more precise string"
  objects:
    ids: 1,23

object:
  id: 1
  name: "chest"
  description: "looks pretty damn old"
  on-text: "the chest has been opened!"
  off-text: "the chest has been closed!"

基本的に、各部屋にはid、プレーヤーが部屋に入ったり検索したりするときに表示されるテキストがあります。また、同じyamlファイルで宣言されている「オブジェクト」の配列もあります。

yamlファイル内でこの構成は可能ですか?また、各部屋と各オブジェクトを配列に抽出する必要があるため、次のようになります。

[12, "long string", "Longer more precise string", [1, "chest", "looks pretty damn old", "the chest has been opened!", "the chest has been closed!"], [ ... item 23 ... ]]

この構成により、1つのループを作成し、配列の位置ですべての値を参照することにより、ファイルを解析し、GenericRoomクラスとGenericObjectクラスを簡単に作成できます。これはSnakeYAMLが私のためにできることですか?私はいくつかの例で遊んでいますが、実際のYAMLに関する知識が不足しているため、良い結果を得るのが難しくなっています。

4

1 に答える 1

2

これを使用して、オブジェクトを自分で部屋に接続する必要があります。

room:
  id: 12
  entry: "Long string"
  objects: [1, 23]

objects:
  - { id: 1, text: bla bla }
  - { id: 2, text: bla bla 2 }
  - { id: 23, text: bla bla 23}

またはSnakeYAMLはアンカーとエイリアスの恩恵を受けることができます:(エイリアスを使用する前にアンカーを定義する必要があります)

objects:
  - &id001 {id: 1, text: bla bla }
  - &id002 {id: 2, text: bla bla 2 }
  - &id023 {id: 23, text: bla bla 23 }

room:
  id: 12
  entry: "Long string"
  objects: [ *id001, *id023]

(ここでドキュメントを確認できます:http ://www.yaml.org/spec/1.2/spec.html#id2765878 )

于 2011-11-25T11:17:35.537 に答える