【问题标题】:Storage method for Android AppAndroid App的存储方式
【发布时间】:2013-01-05 02:54:01
【问题描述】:

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

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

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

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

我愿意接受任何和所有建议。我正在使用 Android SDK 在 Eclipse 中工作。

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

感谢任何帮助。

【问题讨论】:

    标签: android storage


    【解决方案1】:

    你可以用你说的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 elseswitch 或任何您想使用的东西。

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

    【讨论】:

      【解决方案2】:

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

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

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

      打开文件并将其转换为String 后,您可以使用JSONArray(yourString) 对其进行解析,然后使用适当的方法从那里获取每个单词JSONObject、其名称String 及其@限制字987654326@Strings.

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2012-06-08
          • 2011-09-07
          • 1970-01-01
          • 2015-04-14
          • 1970-01-01
          • 2011-08-08
          • 2013-04-09
          • 2012-06-30
          • 1970-01-01
          相关资源
          最近更新 更多