如何在Java中创建游戏成就

如何在Java中创建游戏成就,java,Java,我试图用Java创造游戏成就。我有classPlayer和fieldint-level。在游戏中,每当玩家获得经验,他就可以达到新的水平。当玩家达到10级时如何触发?(没有if操作符,因为据我所知,如果玩家达到10级或未达到10级,则检查所有时间的经验增益是不正确的。因为如果我将有多个成就?。 我的建议是使用自己的事件?我正在寻找执行此任务的正确方法 package-testmyproductions; 公开课成绩{ 私有静态类播放器{ 私用整数级=1; public int getLevel(

我试图用Java创造游戏成就。我有class
Player
和field
int-level
。在游戏中,每当玩家获得经验,他就可以达到新的水平。当玩家达到10级时如何触发?(没有
if
操作符,因为据我所知,如果玩家达到10级或未达到10级,则检查所有时间的经验增益是不正确的。因为如果我将有多个成就?。
我的建议是使用自己的事件?我正在寻找执行此任务的正确方法

package-testmyproductions;
公开课成绩{
私有静态类播放器{
私用整数级=1;
public int getLevel(){
回报水平;
}
公共void设置级别(int级别){
这个水平=水平;
}
@凌驾
公共字符串toString(){
返回“玩家{”+
“级别=”+级别+
'}';
}
}
公共静态void main(字符串[]args){
玩家=新玩家();
对于(int i=0;i<100;i++){
player.setLevel(player.getLevel()+1);
/*当玩家达到10级时如何触发?(没有if操作符)
*然后说“你达到了10级!”*/
}
}
}

老实说,我认为没有条件的检查,你无法实现你想要的目标。你的要求是明确说明“如果你达到了10级,那么就表现出成就”。我想你担心你的成就体系的规模。构建一个hashmap怎么样。其中关键是级别,值是授予该级别的成就列表

这里有一个例子,你可以用一个hashmap指向一个单一的成就,当然你也可以用
List
来表示多个成就

如果等级包含在hashmap中,则显示其相应的成就

以下是一个例子:

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);

}
int级别=10;
Map levelToAchievMap=newhashmap();
levelToAchievMap.put(10,“恭喜你达到10级”);
如果(标高至最高标高容器标高){
System.out.println(levelToAchievMap.get(level);
}

老实说,我认为你不需要有条件的检查就无法实现你想要的目标。你的要求是明确说明“如果你达到了10级,那么展示你的成就”。我想你担心你的成就系统的规模。你如何构建一个hashmap。其中关键是级别,值是授予该级别的成就列表

这里有一个例子,你可以用一个hashmap指向一个单一的成就,当然你也可以用
List
来表示多个成就

如果等级包含在hashmap中,则显示其相应的成就

以下是一个例子:

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);

}
int级别=10;
Map levelToAchievMap=newhashmap();
levelToAchievMap.put(10,“恭喜你达到10级”);
如果(标高至最高标高容器标高){
System.out.println(levelToAchievMap.get(level);
}

“没有if运算符,因为据我所知,一直检查是不正确的”为什么你认为这是错误的?我没有看到任何其他简单的方法可以做到这一点,使用if语句应该不会对你的性能产生太大的影响。你可以为每个级别设置一个enum常量,对于第10个级别,你可以覆盖一些方法来更新玩家的exp,或者你可以做一些其他的事情,但我能想到的所有其他事情都是相同的mplicated您可以使用
switch
语句。这样您可以在不同的级别触发不同的事件。但switch基本上只是if的另一种形式。@home是CIS的所在。好吧,switch可以稍微快一点,但不会太快,这看起来真的很简单trivial@user也许他会在他的游戏中有数千个关卡和一个不同的ac每10级的等级:)是的,我知道在这种情况下,他可能会使用模数而不是开关:P@IljaTarasovs你把苹果和橙子混在一起,你也在过度思考你的问题。即使你用观察者模式实现事件,你仍然需要一些东西来触发该事件。这就是if/switch语句。“没有if操作员,因为据我所知,一直检查是不正确的"为什么你认为这是错误的?我没有看到任何其他简单的方法可以做到这一点,使用if语句应该不会对你的性能产生太大的影响。你可以为每个级别设置一个enum常量,对于第10个级别,你可以覆盖一些方法来更新玩家的exp,或者你可以做一些其他的事情,但我能想到的所有其他事情都是相同的mplicated您可以使用
switch
语句。这样您可以在不同的级别触发不同的事件。但switch基本上只是if的另一种形式。@home是CIS的所在。好吧,switch可以稍微快一点,但不会太快,这看起来真的很简单trivial@user也许他会在他的游戏中有数千个关卡和一个不同的ac每10级的等级:)是的,我知道在这种情况下,他可能会使用模数而不是开关:P@IljaTarasovs你在混合苹果和橙子,你也在过度思考你的问题。即使您使用观察者模式实现事件,您仍然需要一些东西来触发该事件。这就是if/switch语句。