我已经仔细研究了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>
Room对象包含以下字段:
std::vector<Item> itemsInRoom;
std::vector<Room> connectingRooms;
std::vector<Monster> monstersInroom;
std::string roomName;
提前致谢!
编辑:删除编辑,因为特定问题已解决。
答案 0 :(得分:1)
要做的第一件事是了解有关XML以及表示/构造/抽象数据的更多信息。例如,编码例如通常是不明智的。房间内的“短剑”项目和你一样。相反,您可能希望在其他地方提供该项目(或其模板)的定义,并且只能引用该项目,可能在房间节点内有一些额外的参数。您可能还想学习使用属性(所有数据不相同,某些数据应该属于属性)。
一旦你了解了这一点,实际的TinyXML就很容易了。 TinyXML非常简单:
TiXmlDocument
,为其指定数据文件的名称LoadFile
FirstChildElement
,为您提供根节点(请注意,如果您在XML中有多个房间,则需要有一个单独的根节点!)FirstChildElement
和NextSiblingElement
FirstChildElement
和NextSiblingElement
每个房间内的“任何内部”(无论您决定了什么),以弄清楚每个房间的样子以及内容是什么他们。 你必须知道这些数据意味着什么,TinyXML不能知道这种事情,它只是为你提供结构化数据。 <door to="guard_room" x="5" y="3" status="locked" />
的内容时,创建必要的链接,以便你的游戏做出适当的反应。(不要忘记检查错误)
TinyXML网站上的教程也很容易理解(最后我看了大约2 - 3年前,你基本上可以复制粘贴它们)。如果这些确实构成了相当大的问题,我会重新考虑暂时编写RPG的想法。我不是永远在说,但至少在你有足够的经验来追随这些之前。