Java 有没有办法减少if/else语句的数量,使我的代码更高效?
我目前正在用Java制作一个小游戏,你可以从一个简单的粘贴图形(我在Photoshop中画的)开始,然后你可以用硬币购买物品 现在你可以购买3件物品:剑、盔甲和头盔 如果您用剑单击复选框并按下购买按钮,ImageView中的图像基本上将更改为另一个图像(我刚刚在Photoshop中的原始stickman上创建了一个新层,他手持剑) 我意识到,我在游戏中添加的物品越多,物品组合的可能性就越大,我最终会有太多的if/else语句。在伪代码中,如果我继续做我到目前为止一直在做的事情,它看起来是这样的:Java 有没有办法减少if/else语句的数量,使我的代码更高效?,java,if-statement,Java,If Statement,我目前正在用Java制作一个小游戏,你可以从一个简单的粘贴图形(我在Photoshop中画的)开始,然后你可以用硬币购买物品 现在你可以购买3件物品:剑、盔甲和头盔 如果您用剑单击复选框并按下购买按钮,ImageView中的图像基本上将更改为另一个图像(我刚刚在Photoshop中的原始stickman上创建了一个新层,他手持剑) 我意识到,我在游戏中添加的物品越多,物品组合的可能性就越大,我最终会有太多的if/else语句。在伪代码中,如果我继续做我到目前为止一直在做的事情,它看起来是这样的:
private void loadOwnedItems(){
String itemsInDB = readFromDB.getItems(SingletonDataValues.getInstance().getId());
if(itemsInDB.equals("Sword, ")) {
//insert pic of guy with sword
}
else if(itemsInDB.equals("Sword, armor, ")){
//insert pic of guy with sword and armor
}
else if(itemsInDB.equals("Sword, armor, helmet, ")) {
//pics of guy w/ sword, armor, helmet
}
else if(itemsInDB.equals("Armor, ")) {
//insert pic of armor
}
else if(itemsInDB.equals("Armor, helmet, ")) {
//armor + helmet
}//and so on...
有可能用户会购买一把剑+头盔,或者只是一把头盔+盔甲,盔甲+剑,因此如果我在游戏中添加更多物品,可能性会变得太大
有没有更好的办法,那我该怎么做呢?我不确定你是怎么做的,但是一个广泛的想法是将所有购买的东西作为单独的对象,每次玩家购买东西时,你都将单个对象添加到场景中,而不是重新绘制整个场景。几句话:1)这个问题可能会更好。2) 将显然是
集合的东西作为字符串处理似乎很奇怪。使用适当的数据结构肯定会有所帮助。3) 如果你将来扩展你的游戏,它可能会有帮助,你可以在一个基本角色图像上应用装备遮罩。我会切换到一个系统,该系统接收变量itemsInDB
中的每个项目,并单独处理项目,例如将其绘制到屏幕上。你正处在一个危险的斜坡上代码>组合,而这不是一条你为了自己的理智而想走的路。很多人将此标记为重复,但我在标记为重复的线程中找不到答案。我不擅长解释,但这个答案实际上为我解决了这个问题。非常感谢。