0

我在 AS3 中创建了这个游戏,它显示一个英文单词和 4 种可能的法语翻译。它从一个 XML 文件加载所有单词,并且可以毫无问题地工作(两种语言中大约 1000 个单词的池)。

我想做的是跟踪产生错误的单词,以便我可以再次呈现它们,直到我的学生正确为止,同时“标记”已经成功使用的单词,以便他们做到不再出现。

我想了很久很久,用谷歌搜索,没有任何有趣的东西。所以这是我提出的想法,请随时发表评论并指出我正确的方向。

我的 vocab XML 文件看起来像这样

<VOCAB>
<ENGLISH> The dog </ENGLISH>
<FRENCH> Le chien </FRENCH>
<VOCAB_ID> 0458 </VOCAB_ID>
<VOCAB_CATEGORY> 12 </VOCAB_CATEGORY>
</VOCAB>

IDEA1:在我现有的文件中包含一个额外的 XML 标记,它将跟踪所有内容。优点:让我无需加载 2 个 XML 对象并同时处理它们。较小的文件大小 缺点:只有 1 名玩家可以使用游戏,因为分数与词汇文件相关联(但我可以为其他玩家创建重复的词汇文件)

<VOCAB>
<ENGLISH> The dog </ENGLISH>
<FRENCH> Le chien </FRENCH>
<VOCAB_ID> 0458 </VOCAB_ID>
<VOCAB_CATEGORY> 12 </VOCAB_CATEGORY>
<SCORE> -2 </SCORE> // Negative number indicates fails, zero = never used, pos number =  success
</VOCAB>

IDEA2:创建一个全新的 XML 文件只是为了保持分数优势:可以有无限数量的玩家,每个人都有自己的分数文件。保持词汇和得分两个不同的东西。缺点:必须进行一些巧妙的编程,以便不会为游戏选择的每个新词汇解析整个 XML 文件,这会减慢速度

<TRACKING>
<VOCAB_CATEGORY> 12 </VOCAB_CATEGORY>
<VOCAB_ID> 0458 </VOCAB_ID>
<SCORE>-2</SCORE> // Negative number indicates fails, zero = never used, pos number =  success
</TRACKING>

你怎么看?

4

4 回答 4

2

反馈:

包含“vocab_id”是您的明智之举,这为您提供了一个唯一键,可用作某种“查找表”或数据库中的标识符。

至于以何种方式追究这个错误,如果是我,我肯定会把答案和文字分开。这使您可以做任何您想做的事情,因为包含单词的“原始文件”不会因为大量不同的结果数据而“混乱”。

借助您的 vocab_id,您可以在用户响应和单词之间创建映射。

在这一点上,你想如何存储数据并不重要。如果您在 xml 中执行此操作,则将来某个时候可以轻松地将所有这些数据放入数据库中。目前最重要的是确保您保存数据并将其存储在安全的地方。(Git/Svn、备份等)

将来,开始使用某种数据库来存储所有数据可能是明智之举。但是,如果您继续使用 xml,您可以创建一些小程序,用来自 xml 的数据填充数据库。

我认为作为下一步,您应该为每个用户创建一个 xml 文件,在其中存储他们回答的单词以及他们对每个单词的回答,或者创建一个包含所有用户和答案的 xml 文件。

<words>
<vocab id="458" word="the dog">
<answer timestamp="..">le dog</answer>
<answer timestamp="..">la dog</answer>
<answer timestamp="..">le chien</answer>
</vocab>
<vocab id="404" word="foo">
..
</vocab>
</words>
于 2012-05-21T08:02:52.987 回答
0

好的,我最终破解了它。

词汇表作为 XML 对象加载,当一个词被正确猜到时,它的节点将从 XML 中删除。通过这种方式,我确保不再询问正确的单词。

同时,一个文本变量保存所有给出的答案(正确或不正确或跳过),格式为 XML(但保留为字符串),用户可以在需要时保存。

当一个新游戏开始时,这个文件被加载(如果存在),并且一旦这个文件被加载,过去的正确答案就会从 XML 对象中删除。

在性能方面,我在文件中有 1500 多个节点,目前还没有看到任何降级。

于 2012-06-10T08:20:55.810 回答
0

看单词和播放器的数量,我不会使用 XML。我会使用 SQLite 数据库。您可以轻松地跟踪每个玩家的得分。接下来,您可以使所有内容都与外键相关。

于 2012-05-21T06:47:51.930 回答
0

我也会推荐 json 而不是 xml。Json 的内存比 xml 小得多。如果您的实现不知道结构并且需要解析特定的子对象等,那么 XML 很好。如果您的代码知道完整的结构,那么 JSON 会更快(使用 Flash 原生 json)

于 2012-05-21T07:09:33.090 回答