0

我正在为我的朋友和家人制作一个基于游戏禁忌的 Android 应用程序。基本上,游戏会显示一个主词,然后是限制词列表。目的是让你的队友说出主要词,但你不能说出任何限制词。

对于这个应用程序,我需要几百个主要词,每个主要词加上 7 个限制词。

我的问题是如何存储这些,以便应用程序可以随机访问它们。

我最初的想法是使用字符串数组来使用 XML 资源,但我不知道如何使用随机生成器引用这些资源。

我对任何和所有建议持开放态度。我正在使用 Android SDK 在 Eclipse 中工作。

澄清一下,我在 Java/C/C++ 方面经验丰富,但这是我的第一个 Android 应用程序。我的游戏框架几乎完成了,这是我唯一的主要问题。

任何帮助表示赞赏。

4

3 回答 3

0

我开发了一个测验应用程序(一个问题,5 个答案的多项选择),其中我将所有内容存储在 SQLite 数据库中。通过此实现,您还可以根据需要使用类别作为您的单词。您可以做的是计算有多少个单词,并将其作为一个包含 0 到多少个的整数数组列表。然后我把列表打乱了,所以它是随机的。这样我就不会重复任何问题,这与使用可能可能的随机问题不同。如果您确实希望使用随机,另一种可能性是每次使用该词时都将其删除。这种方式的好处还在于您不必引用每个字符串、字符串数组等 - 您可以每次向数据库添加更多单词,固定结构将自动处理它。

于 2013-01-05T04:02:48.097 回答
0

您可以使用您所说的xml方法随机。像这样的东西:

假设您有 1 个字符串数组,其中包含 8 个单词(1 个正确和 7 个受限),您可以拥有尽可能多的具有不同名称的数组。它们保存在 string.xml

现在在 java 中创建Random并检查你得到的数字,然后如果你得到 x 数字打开 x 字符串数组。

这是一个例子:

<string-array name="a">
    <item>A</item>
    <item>B</item>
    <item>C</item>
    <item>D</item>
    <item>E</item>
    <item>F</item>
    <item>G</item>
    <item>H</item>
</string-array>

现在在java中:

Random r = new Random();
int i1 = r.nextInt(max - min + 1) + min;

然后检查您的号码:

if (i1 == 0){
//do your magic code here with string-array a
} else ...

或使用您喜欢的任何方法,例如switch...

编辑:或者一个技巧可以使字符串数组的名称为a#(诅咒#是一个数字)然后执行:

array = getResources().getStringArray(R.array.a+i1);

使用这种方法,您不需要使用if elseorswitch或任何您想要使用的东西。

注意:这段代码是我的想法,所以它可能有一些写作错误。

于 2013-01-05T03:02:37.830 回答
0

看起来你有一个这样的数据模型:你有一个主要单词列表。每个主要词对象包含词本身,然后是相关限制词的列表。

这看起来像是你可以用 JSON 或 XML(或协议缓冲区,我猜)做的事情。我会选择 JSON,因为它在速度和 Android 支持之间取得了平衡。您可以使用编辑器创建 JSON 文件,它们看起来像这样:

[{
    "name": "animal",
    "restricted": ["cat", "dog", "mouse"]
},{
    "name": "fruit",
    "restricted": ["kiwi", "apple", "orange"]
},
{
    "name": "city",
    "restricted": ["Paris", "London", "Madrid"]
}]

打开文件并将其转换为 aString后,您可以使用解析它JSONArray(yourString),然后从那里使用适当的方法来获取每个单独的 word JSONObject、它的名称String和它JSONArray的受限词Strings。

于 2013-01-05T03:11:06.170 回答