解锁Android游戏逻辑中的关卡

时间:2012-03-09 02:21:40

标签: java android andengine

我有一个级别场景,我允许用户选择一个级别。

但是要进入下一个级别,用户必须在它之前完成该级别。

现在是第一个自动解锁的关卡。

完成后我想解锁第二级。当第二级完成时,解锁第三级。

我想不出我会怎么做。我想到了共享偏好,但不知道我应该使用的逻辑。

我可以在这背后的逻辑上使用一些帮助。

任何人都可以帮助我吗?

编辑:

在我的游戏场景中,当游戏完成时,我将其称为共享偏好

editor.putString("level_completed"+level, "unlocked");
editor.commit();

然后我做..

String levelStatus = preference.getString("level_completed:"+level, "locked");

if(levelStatus.equals("unlocked")){

}else{
    if(level == 0){
        box.setUserData("unlocked");
}else{
        box.setColor(1.0f,0.0f,0.0f);
        box.setUserData("locked");
    }
}
在级别选择场景中

检查关卡是否已解锁。

这似乎并没有奏效。应该解锁的级别未解锁。

3 个答案:

答案 0 :(得分:3)

有很多方法可以解决它。如果进展始终是线性的(1,2,3,4),那么您可以只存储“最大解锁级别”的整数,然后在完成级别时更新它。否则,您还可以拥有许多布线,例如“2级解锁”,当您完成1级时,您可以将“2级解锁”设置为true。共享偏好绝对是一种合理的方式。

答案 1 :(得分:2)

我要做的是在面向对象的视角中看待它,这就是Java的全部意义所在。当我卡在一段代码上然后我把它写下来。想一想代码的目标是什么。

  • 您可能有一个名为Level的课程。在这个级别类中,您可以拥有一个名为“unlocked”的属性或相反的“locked”。然后,当用户进入“播放关卡”屏幕或您拥有的屏幕时,只允许用户查看已解锁的关卡。

  • 你也可能有某种类型的Player类,所以你可以拥有一个名为“unlockedLevels”的属性,它是Level []类型。那么所有未锁定的级别都将在这个级别数组中。

所有关于代码的结构,结构和真实的对象定位是Java中最重要的事情。当你偏离面向对象设计时,你就会遇到本来不应该存在的问题。

答案 2 :(得分:2)

在某些时候,除非你的游戏从每次用户做一些其他事情开始时重新启动,否则你将保存游戏的状态。您可以保存用户的分数,游戏状态等。执行此操作时,无论如何都可以保存未锁定的级别。每个级别只有一点信息,所以你不需要对此有所了解。也许您还有一个“保存”按钮,保存文件,从保存加载的功能。再次,只需在保存其他所有内容时将用户的级别解锁。

或者你还没有开始保存任何东西吗?

好吧,首先将保存状态保存在活动生命周期方法的包中,例如onPause。如果多次保存适合您的游戏,请使用文件并确定其结构。如果只有一个“保存”可以,偏好可能对你很好。测试:如果您想计算首选项的,请不要使用首选项。