用户可以两次做同一级别

时间:2016-01-16 19:24:34

标签: java android sharedpreferences

我已经在比赛中工作了一段时间。它并不太难,而且有水平。

每次用户通过关卡时,他都会得到一分。 发生的情况是,用户可以多次执行相同级别并获取他想要的一些点,我该如何解决?我不相处。

2 个答案:

答案 0 :(得分:0)

如果我没有错,你会问如何确保用户在他已经越过/解决的阶段再没有得到一点。

嗯,有这个简单的想法。对于每个阶段,保留TAG(唯一名称),如果用户已成功越过阶段,请在共享首选项中为他指定一个点并将TAG值设置为1或TRUE。 因此,如果用户再次播放相同级别,则检查TAG,如果且仅当TAG未设置时,则给予他分数/分数,否则您不会给出分数/分数。

这是您在共享偏好设置中存储对的方式:


    SharedPreferences.Editor editor = getSharedPreferences("MY_PREF_FILE_NAME", MODE_PRIVATE).edit();
    editor.putInt("LEVEL-1", "1"); //1 means cleared level
    editor.commit();

让我给你样品(注意根据你的需要做出改变)


    int score = 0; 
    SharedPreferences prefs = getSharedPreferences("MY_PREF_FILE_NAME", MODE_PRIVATE); 
    int alreadyWon = prefs.getInt("LEVEL-1", -1); // This function means; give me the value of LEVEL-1 if exits, else return -1
    if(alreadyWon == 1){
        // you have already given the score
        //TODO -> what to do next
    }
    else{
        //you have not got the score before for this level, so give score of 1
        score = score + 1;
        //and now set the score of this level in shared preferences
        SharedPreferences.Editor editor = getSharedPreferences("MY_PREF_FILE_NAME", MODE_PRIVATE).edit();
        editor.putInt("LEVEL-1", "1"); //1 means cleared level
        editor.commit();
    }

答案 1 :(得分:0)

List<String> completedLevels = new ArrayList<String>();

public void onLevelComplete(String levelName) {
    if (!completedLevels.contains(levelName)) {
        completedLevels.add(levelName);
        score += 1
    }
}