在理解tinyxml教程以及如何使用它时遇到困难
Having trouble understanding the tinyxml tutorial and how to use it
我已经仔细阅读了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;
提前感谢!
编辑:删除了该编辑,因为该特定问题已经解决。
要做的第一件事是了解更多关于XML和表示/结构化/抽象数据的知识。例如,通常不明智的做法是在房间内对项目"短剑"进行编码。相反,您希望在其他地方提供该项目的定义(或其模板),并且只引用该项目,可能在房间节点内添加一些额外的参数。您可能还想学习使用属性(所有数据都是而不是相同,一些数据应该是属性)。
一旦你摸索过了,真正的TinyXML东西就很容易了。TinyXML是最简单的:
- 在一些语义上达成一致。写下它们,记住它们,在创建XML文件时遵循它们
- 创建一个
TiXmlDocument
,给它数据文件的名称 - 对文档对象调用
LoadFile
- 调用
FirstChildElement
,为您提供根节点(请注意,如果XML中有多个文件室,则需要有一个单独的根节点!) - 用CCD_ 4和CCD_
- 现在您必须记住XML文件的结构(或其元素的语义)。TinyXML无法神奇地为您解决这个问题
- 使用
FirstChildElement
和NextSiblingElement
的方式与房间节点的方式相同,用于"每个房间内的任何东西"(无论您决定是什么),以了解每个房间的外观以及其中的内容你必须知道这些数据意味着什么,TinyXML不可能知道这种事情,它只是为你提供结构化的数据 - 解析引用并设置相应的数据结构(例如,当你有类似
<door to="guard_room" x="5" y="3" status="locked" />
的东西时,创建必要的链接,以便你的游戏做出适当的反应
(别忘了检查错误)
TinyXML网站上的教程也很容易理解(我上一次看是在2-3年前,你基本上可以复制粘贴它们)。如果这些真的造成了相当大的问题,我会暂时重新考虑写RPG的想法。我不是说永远,但至少在你有足够的经验来遵循这些之前。
相关文章:
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- 使用静态成员声明类时遇到问题
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 我在使用C++文件时遇到了一些问题
- 我在C++中使用 getline() 函数时遇到问题
- 使用 MinGW 在 Windows 上构建 GLEW 时遇到问题
- 在 cpp 中使用较大数字时遇到大数字的问题<iomanip>
- 我在使用 boost::serialization 时遇到了一个问题,我的代码在 Linux 中运行良好,但在 Wind
- 我遇到使用 c++ 逐行读取输入文件的问题
- 在 Tensorflow C++ 中使用 FIFOQueue 时遇到问题
- 在尝试使用递归查找集合子集的总数时,我遇到了分割错误
- 使用 NVIDIA GPU 在 Cygwin 中链接 OpenCL 库时遇到问题
- 我们在批处理模式下使用 G++ 时遇到错误
- 我不明白尝试使用字符串作为函数参数时遇到的错误
- 如何解决我在 Ubuntu 19.04 下使用 GLFW 时遇到的这个编译问题?
- 在Cython中使用C库时,我遇到了一个错误
- 在MacOS上让SFML在Geany中使用C++时遇到问题