tinyxmlチュートリアルの理解に問題があり、それを使用する方法

私はtinyxml(C ++)のチュートリアルを徹底的に見てきましたが、私がしようとしているものにサンプルをどのように適用するのかはまだ分かりません。要するに私がやっていることは、ゲームで一連のルームオブジェクトを生成するためにxmlを使用することです。誰かが私に次のxmlとRoomオブジェクトの短い例を教えてくれますか? XMLは次のとおりです。


    Prison room
    
    Guard room
    
  
    
      Short sword
      2
       0
    
  
  

Roomオブジェクトには次のフィールドがあります。

std::vector itemsInRoom;
std::vector connectingRooms;
std::vector monstersInroom;
std::string roomName;

前もって感謝します!

編集:特定の問題が解決されたときに編集を削除しました。

0
何を試しましたか?どこで立ち往生しましたか?あなたが期待していた結果ではなく、あなたが得た結果は何ですか?まず、自分で何かを試してみてください。そして、問題にぶつかっているときは助けてください。あなたのユースケースに基づいて例を尋ねるだけでは、実際にこのウェブサイトがどのように動作するかはわかりません。
追加された 著者 Jasper,
そして、私たちがあなたを助けることができないのは、あなたが始めることができないからです。現時点でTinyXMLページを読み込むことはできませんが、チュートリアルからコピーしてユースケースに変更を開始するのがよい方法です。
追加された 著者 Jasper,
ねえ、TinyXMLを使用している人(と私です)は、チュートリアルのすべてが古くなっていることにお気づきかもしれません。 TiXMLDocumentは存在しません。何らかの理由で、NextSibling()とNextSiblingElement()は、正しい場所に印刷しても常に失敗します。あなたはSOを検索してXMLDocumentを使用して適切なアイテムにする必要があります。アンドロイドとiOSでうまくコンパイルされ、Value()を得ることができます。これはJSONやRapidXMLよりもはるかに難しいのでこの男は "難しい人"から始まったただの不運な初心者です誰もが言うように、データ構造とデザインに精通してください!
追加された 著者 Stephen J,
私はそれを始めることができません。なぜなら、私は始める方法や何をすべきかを理解していないからです。それは、
追加された 著者 Jarob22,
私は既にチュートリアルを見て理解しようとしていると言ってきましたが、文字通りそのチュートリアルでそれを理解することはできません。誰かに私が上に掲示したものをする方法の非常に簡単な例を書くように頼むことに何が問題であるかわからないのですか?
追加された 著者 Jarob22,

1 答え

最初に行うべきことは、XMLと、データの表現/構造化/抽象化についてより多くのことを学ぶことです。例えば、通常、例えば、あなたがしているように部屋の中のアイテム "短い剣"。むしろ、そのアイテム(またはそのテンプレート)の定義をどこか他の場所に定義し、それを参照するだけで、ルームノード内にいくつかの余分なパラメータが含まれている可能性があります。また、属性を使用することも習得したいと考えています(すべてのデータは同じものではなく、一部のデータは属性である必要があります )。

一度あなたがそれをgroked、実際のTinyXMLのものは簡単です。 TinyXMLは、できるだけシンプルです:

  1. Agree on some semantics. Write them down, remember them, follow them when you create the xml files.
  2. Create a TiXmlDocument, give it the name of your data file
  3. Call LoadFile on your document object
  4. Call FirstChildElement, giving you the root node (note that if you have more than one room in the xml you need to have a separate root node!)
  5. Iterate over the cildren using FirstChildElement and NextSiblingElement.
  6. Now you have to remember the structure of your xml file (or the semantics of its elements). TinyXML cannot magically figure that out for you.
  7. Use FirstChildElement and NextSiblingElement in the same manner as for the room nodes for "anything inside" each room (whatever you decided that may be) to figure out what each room looks like and what's in them. You must know what this data means, TinyXML cannot know this kind of thing, it merely provides you with structured data.
  8. Resolve references and set up the corresponding data structures (e.g. when you have something like create the necessary links so your game reacts appropriately.

(そしてエラーをチェックすることを忘れないでください)

TinyXMLサイトのチュートリアルも非常に分かりやすいです(私は2,3年前に見ましたが、基本的にコピー&ペーストすることができました)。これらが実際にかなりの問題を抱えているなら、当面はRPGを書く考えを再考したいと思います。私は永遠に言っているわけではありませんが、少なくともあなたがこれらのことに従う十分な経験を得るまで、

1
追加された
ゲームには多くの剣があります。大きな剣と小さな剣、鈍い鋭利なものがあるかもしれませんが、すべての剣は多かれ少なかれ同じです。それにはハンドルと刃があり、あなたはそれを誰かに振って、彼を切り取る。この「共通ロジック」は、冗長な情報を何度も繰り返すのではなく、一度一度どこかにエンコードし、必要に応じてパラメータを変更するのが最適です。簡単で、メモリを少なくし、コンピューティングパワーを抑え、最も重要なのは愚かなエラーを作る余地が少ないことです。
追加された 著者 Damon,
必要に応じて、1つまたは複数のXMLファイルを使用できます。すべてのアイテムテンプレートやすべての部屋などをまとめて1つのファイルにまとめます。上記のコードスニペットは、まずXMLファイルにルートノードがないため(つまり、がルートノードであるため)、そのようには機能しません。整形式XMLには1つのルートノードがあります。しかし、これは、あなたがこのようにすればファイルごとに1つの部屋しか持てないことを意味します...それはあまり効率的ではありません(しかし、可能です)。次に、適切な子ノードと兄弟ノードを取得する必要があります。ルートの最初のが最初の部屋(または何でも)ですが、これは兄弟です。
追加された 著者 Damon,
あなたは本当に構造を理解しなければなりません(あなたの心の中に、木のように描いてください)。 TinyXMLは、あなたがそれを求めていることをします。意味のない、または存在しないものを返すように要求すると、 null が返されます(エラーをチェックせずに逆参照しようとするとプログラムがクラッシュします)。つまり、あなたが書いたコードは、XMLファイルの構造と一致していなければなりません。また、そのレイアウトは正気でなければなりません。ルームノードを別の部屋ノードにラップすると(たとえば)適切なルートノードが提供され、1つのファイル内に多くの部屋が配置されます。
追加された 著者 Damon,
rootノードとして実際に ノードを持っていれば、それは必要なくなります。上記のスニペットは ルートノードを含んでいません。あなたが投稿したものから、 room ノードがルートになります。これは、ドキュメントが整形式であるためにファイルごとに1つの部屋しか持てないことを意味します。
追加された 著者 Damon,
あなたは部屋の中に短い剣のアイテムをエンコードすると言うと、なぜそれが賢明でないのか説明できますか?
追加された 著者 Jarob22,
それでは別のXMLファイルを使用するのですか?また、私の編集を見ていただけますか?私はあなたのアドバイスを行った。
追加された 著者 Jarob22,
ああ!ありがとう! :)私はちょうどFirstChildElementへのすべての呼び出しを変更しました。そして今roomNameは実際それです:)だから、アイテム/モンスターを含むXML文書を持っていれば、このxml文書内の他のxml文書にリンクしますか?
追加された 著者 Jarob22,
なぜノードをノード内に置く必要があるのか​​理解できませんが、の中に以外のものは何もないので、少し無意味です。
追加された 著者 Jarob22,
ああ、申し訳ありませんが、私の実際のxmlファイルが何であるかを魔法のように知っている人がいると仮定します:P nah、私はrootとしてノードを持っています:)
追加された 著者 Jarob22,
私はこの答えを受け入れるようにするつもりです。私は基本的な話をしています。もし他の問題があれば、別の質問でうまくいくでしょう。 ) ご協力いただきありがとうございます!
追加された 著者 Jarob22,