-1

我有 27 个角色希望玩家通过击败分数来解锁,例如,如果他的分数大于 200,他会解锁角色 #1。我很难做到这一点。

我有一个包含其编号的字符类,解锁它所需的分数,以及一个检查他是否已解锁的布尔值。但是当涉及到储蓄时,我不能这样做。

主游戏循环在文件中GameScreen。它有一个points计算分数的值。

GameState更改为PlayerDead我要检查是否有新角色解锁,以及是否已击败高分以节省积分。

请帮忙,我已经为此苦苦挣扎了一个多星期,但我找不到一个好的教程,SharedPrefs因为它们都适用于基于 GUI 的活动,它保存了您输入的姓名和姓氏。

4

4 回答 4

0

如果您需要 sharedPrefs 我可以帮助您。

我可以给出一些示例代码。

或者你可以发送你的代码和错误,如果你得到一个,我们会更新它。

但是 sharedPrefs 是个好主意吗?如果用户进入应用程序设置并清除您的应用程序的数据,所有数据都将丢失。

为什么不尝试创建一个 sqlite 数据库,将其保存到 assets 目录并使用它?

于 2013-02-23T19:29:52.337 回答
0

这实际上很简单,您使用 SharedPreferences 来存储键值对。你可以打电话

SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);

然后从 GameScreen 定义一个常量:

public static final String KEY_SCORE = "score";

用作保存的关键。

为了实际保存,您需要一个编辑器:

SharedPreferences.Editor mEditor = mPrefs.edit();
//save data now, mPlayerScore is the score you keep track of
//if it's another type call putString(), etc
mEditor.putInt(KEY_SCORE, mPlayerScore);
//if that is the only thing you want for noe
//close and commit
mEditor.commit();

为了检索保存的分数,在您的 onCreate() 期间,您可以执行以下操作:

public void getUserProgress() {
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
//no need for an editor when retrieving
mPlayerScore = mPrefs.getInt(KEY_SCORE, 0);
//second value passed was the default score 
//if no score was found
}

为了检查是否有新角色被解锁,可以在每局游戏结束后调用如下代码:

private void checkForUserUnlocks() {
if (mPlayerScore >= MyUnlockableCharacter.SCORE_NEEDED_TO_UNLOCK)
   MyUnlockableCharacter.isUnlocked = true;
//and same for other unlockabld characters
} 

还有其他方法可以访问 SharedPreferences,如果您需要更多信息,请告诉我。

于 2013-02-23T19:38:37.313 回答
0

使用以下代码从 SharedPreference 存储和检索分数。

public static void saveScore(Context context, int score){
    SharedPreferences sharedPreferences = context.getSharedPreferences("YOUR_PACKAGE_NAME", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putInt("SCORE", value);
    editor.commit();
}

public static int loadScore(Context context){
    SharedPreferences sharedPreferences = context.getSharedPreferences("YOUR_PACKAGE_NAME", Context.MODE_PRIVATE);
    int score = sharedPreferences.getInt("SCORE", 0);
    return score;
}
于 2013-02-23T19:47:27.100 回答
0

阅读样本;

public int Read() {
        SharedPreferences mSharedPrefs = getSharedPreferences("FileName",
                MODE_PRIVATE);
        SharedPreferences.Editor mPrefsEditor = mSharedPrefs.edit();
        int mCounter = mSharedPrefs.getInt("Counter", 0);
        return mCounter;
    }

写样本;

public void Write() {
        SharedPreferences mSharedPrefs = getSharedPreferences("FileName",
                MODE_PRIVATE);
        SharedPreferences.Editor mPrefsEditor = mSharedPrefs.edit();
        mPrefsEditor.putInt("Counter", 15);
        mPrefsEditor.commit();
    }
于 2013-02-23T20:02:05.430 回答