我已经在比赛中工作了一段时间。它并不太难,而且有水平。
每次用户通过关卡时,他都会得到一分。 发生的情况是,用户可以多次执行相同级别并获取他想要的一些点,我该如何解决?我不相处。
答案 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
}
}