在AS3中使用XML来跟踪游戏分数

时间:2012-05-21 06:41:47

标签: xml actionscript-3

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

我想要做的是跟踪产生错误的单词,以便我可以再次展示它们,直到我的学生正确地说出来,同时“标记”已经成功使用的单词,它们不再出现了。

我想到了这个漫长而艰难的事情,谷歌搜索它并没有带来任何有趣的东西。 所以这是我提出的想法,请随意评论,并指出我正确的方向。

我的词汇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对象并同时处理它们。文件较小 DRAWBACK:只有1名玩家​​可以使用游戏,因为得分与vocab文件相关(但我可以为其他玩家创建重复的词汇文件)

<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文件只是为了保持分数 优势:可以拥有无​​限数量的玩家,每个玩家都有自己的得分档案。保持词汇和得分两个单独的东西。 DRAWBACK:将不得不做一些聪明的编程,以便整个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 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我还推荐json over xml。 Json的内存比xml小得多。如果你的实现不知道结构并且需要解析特定的子等,那么XML是很好的。如果你的代码知道完整的结构,那么JSON就会更快(使用flash native json)

答案 3 :(得分:0)

好的,我最终破解了它。

词汇表列表作为XML对象加载,当正确猜出某个词时,其节点将从XML中删除。这样我就可以确保不再要求正确的单词。

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

当新游戏启动时,将加载此文件(如果存在),并在加载此文件后立即从XML对象中删除过去的正确答案。

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