gpt4 book ai didi

c++ - 无法理解 tinyxml 教程以及如何使用它

转载 作者:行者123 更新时间:2023-11-28 08:10:45 25 4
gpt4 key购买 nike

我已经仔细阅读了 tinyxml (C++) 教程,但仍然无法真正理解如何将这些示例应用到我正在尝试做的事情中。简而言之,我想做的是使用 xml 在游戏中生成一系列房间对象。有人能给我一个包含以下 xml 和 Room 对象的简短示例吗? XML 是:

<room>
<name>Prison room</name>
<connections>
<connection>Guard room</connection>
</connections>
<items>
<item>
<name>Short sword</name>
<attack>2</attack>
<armor>0</armor>
</item>
</items>
<monsters></monsters>
</room>

房间对象有以下字段:

std::vector<Item> itemsInRoom;
std::vector<Room> connectingRooms;
std::vector<Monster> monstersInroom;
std::string roomName;

提前致谢!

编辑:删除了该特定问题已解决的编辑。

最佳答案

首先要做的是学习更多关于 XML 和表示/结构化/抽象数据的知识。例如,将 e.g. 编码通常是不明智的。房间里的元素“短剑”和你一样。相反,您可能希望在其他地方提供该项目(或其模板)的定义,并且仅具有对该项目的引用,可能在房间节点内有一些额外的参数。您可能还想学习使用属性(所有数据都相同,一些数据应该是属性)。

一旦理解了这一点,实际的 TinyXML 内容就很容易了。 TinyXML 尽可能简单:

  1. 同意一些语义。写下它们,记住它们,并在创建 XML 文件时遵循它们。
  2. 创建 TiXmlDocument , 给它你的数据文件的名称
  3. 调用LoadFile在你的文档对象上
  4. 调用FirstChildElement , 给你根节点(请注意,如果你在 XML 中有多个房间,你需要有一个单独的根节点!)
  5. 使用 FirstChildElement 遍历 child 和 NextSiblingElement .
  6. 现在您必须记住 XML 文件的结构(或其元素的语义)。 TinyXML 无法神奇地为您解决这个问题
  7. 使用FirstChildElementNextSiblingElement以与每个房间“内部任何东西”的房间节点相同的方式(无论您决定可能是什么)来弄清楚每个房间的外观以及其中的内容。 你必须知道这些数据是什么意思,TinyXML 无法知道这种东西,它只是为你提供结构化数据。
  8. 解析引用并设置相应的数据结构(例如,当您有类似 <door to="guard_room" x="5" y="3" status="locked" /> 的内容时,创建必要的链接以便您的游戏做出适当的 react 。

(不要忘记检查错误)

TinyXML 网站上的教程也很容易理解(我上次看是在 2-3 年前,你基本上可以复制粘贴它们)。如果这些真的构成相当大的问题,我会暂时重新考虑编写RPG的想法。我不是说永远,但至少在你有足够的经验来遵循这些之前。

关于c++ - 无法理解 tinyxml 教程以及如何使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9159142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com