我正在尝试用Java创建游戏成就。我有班级Player
和现场int level
。在游戏中,每次玩家获得经验时,他都可以达到新的水平。当玩家达到10级时如何触发?(没有if
运算符,因为据我了解,如果玩家达到 10 级,检查所有时间的经验增益是不正确的。 如果我会有不止一个成就?
我的建议是使用自己的事件?我正在寻找执行此任务的正确方法。
package testMyAchievements;
public class AchievementTestMain {
private static class Player {
private int level = 1;
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
@Override
public String toString() {
return "Player{" +
"level=" + level +
'}';
}
}
public static void main(String[] args) {
Player player = new Player();
for (int i = 0; i < 100; i++) {
player.setLevel(player.getLevel() + 1);
/*how to trigger when player reaches a level 10?(without if operator)
* and say "You reached level 10!"*/
}
}
}
老实说,我认为如果没有条件检查,您将无法实现所需的目标。您的要求是明确说明"如果您达到 10 级,则展示成就"。我想你担心你的成就系统的规模。你建立一个哈希图怎么样。其中,关键是级别,值是为该级别授予的成就列表?
这里有一个例子,你可以有一个指向一个单一成就的哈希图,但当然你也可以使用List<String>
来表示多个成就。
如果级别包含在哈希图中,则显示它是相应的成就。
下面是一个示例:
int level = 10;
Map<Integer, String> levelToAchievMap= new HashMap<>();
levelToAchievMap.put(10,"Congrats you've reached level 10");
if(levelToAchievMap.containsKey(level)){
System.out.println(levelToAchievMap.get(level);
}