【问题标题】:Saving high scores in Android game - Shared Preferences在 Android 游戏中保存高分 - 共享首选项
【发布时间】:2013-04-09 09:38:09
【问题描述】:

最近我正在开发一个简单的安卓游戏。对于评分部分,我在很多网站上分享的偏好最好保存高分。现在,如果我需要在游戏中保存不同关卡的高分怎么办?我希望保存每个级别的前三名得分手......

【问题讨论】:

  • 高分适用于全球特定设备或设备?
  • 问题出在哪里?

标签: android sharedpreferences


【解决方案1】:

要保存您的分数,您可以执行以下操作:

// prepare the data: put the String values of the scores of the first 3 users
// in one String array for each level
String[] firstLevelHighscores = new String[] { 
    firstUserLevel1Score, secondUserLevel1Score, thirdUserLevel1Score 
};
String[] secondLevelHighscores = new String[] { 
    firstUserLevel2Score, secondUserLevel2Score, thirdUserLevel2Score 
};
String[] thirdLevelHighscores = new String[] { 
    firstUserLevel3Score, secondUserLevel3Score, thirdUserLevel3Score 
};

// now save them in SharedPreferences
SharedPreferences sharedPref = getSharedPreferences("LevelScores", 
        Context.MODE_PRIVATE);
Editor editor = sharedPref.edit();
editor.putStringSet("level1", firstLevelHighscores);
editor.putStringSet("level2", secondLevelHighscores);
editor.putStringSet("level3", thirdLevelHighscores);

请注意,您可以将更多用户的分数放入字符串数组中。如果您需要为更多关卡保存分数,您只需创建更多数组即可。

要从 SharedPreferences 中检索保存的数据,您可以这样做:

SharedPreferences sharedPref = getSharedPreferences("LevelScores", 
        Context.MODE_PRIVATE);
String[] firstLevelHighscores = sharedPref.getStringSet("level1", null);
String[] secondLevelHighscores = sharedPref.getStringSet("level2", null);
String[] thirdLevelHighscores = sharedPref.getStringSet("level3", null);

我假设您能够将int 转换为String,反之亦然。希望它对你有用。

【讨论】:

  • thnx... 它帮助了我:)
  • 不想回答我的问题? :)
【解决方案2】:

有很多方法可以将您的分数保存到SharedPreference。一切都取决于您的实施方式。

您可以简单地使用putStringSet(key, String[]),其中关键是关卡,String[] 是第一、第二和第三位。

【讨论】:

    【解决方案3】:

    分数设置

    static final String[] LEVEL = {"level1","level2","level3"};
    
    int bestScore1 = 100;
    int bestScore2 = 90;
    int bestScore3 = 80;
    
    SharedPreferences sp = getSharedPreferences(LEVEL[0],Activity.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
    
        editor.putInt("First", bestScore1);
        editor.putInt("Second", bestScore2);
        editor.putInt("Third", bestScore3);
    
        editor.commit();
    

    但你需要计算LEVEL的索引

    获得分数

    SharedPreferences sp = getSharedPreferences(LEVEL[0], Activity.MODE_PRIVATE);
    
        bestScore1 = sp.getInt("First", 0);
        bestScore2 = sp.getInt("Second", 0);
        bestScore3 = sp.getInt("Third", 0);
    

    嗯..但我认为这不是解决您问题的最佳方法:

    【讨论】:

    • 在我的第一次尝试中,我也有同样的想法。但是特里已经很好地解释了。
    猜你喜欢
    • 2014-08-03
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多