我正在为游戏设计模拟器。而且我想建立一个系统,以便从武器和插槽号是动态的武器组合中找到最佳伤害。
示例:
“ A”舰有4个插槽武器,玩家在机库中有6个武器。所以输出应该是这样的。 (组合武器1、2、3和4,带有4个插槽的情况)
1234、1235、1236
1245、1246
1256
1345, 1346
1356
1456
2345, 2346
2356
2456
3456
这是我的代码:
public void searchMaxDamage(){
int weaponLimit = 50;
int slotLimit = 16;
int counter = 0;
int node = 0;
boolean starter = true;
ArrayList<Integer> stack = new ArrayList<Integer>();
while(stack.size() != 0 || starter != false){
if(starter){
starter = false;
}
if(counter != weaponLimit){
if(stack.size() < slotLimit-1){
counter++;
stack.add(new Integer(counter));
}else{
node = counter +1;
System.out.println("Combination: ");
if(node <= weaponLimit){
for(int i=node; i<=weaponLimit; i++){
System.out.print(i + ", ");
}
System.out.println();
stack.remove(stack.size()-1);
}else{
System.out.println(", " + counter);
stack.remove(stack.size()-1);
counter = stack.get(stack.size()-1);
stack.remove(stack.size()-1);
node = counter +1;
}
}
}else{
System.out.println("last: " + counter);
stack.remove(stack.size()-1);
counter = stack.get(stack.size()-1);
stack.remove(stack.size()-1);
}
}
System.out.println("Success");
Toolkit.getDefaultToolkit().beep();
}
已经对其进行了测试,可以在机库中使用10-15武器的4、5、6号插槽正常工作。输出显示出我想要的那一行数字。但是,当我尝试使用16个插槽和25-30种武器时,代码会循环播放,而结果却不会给我5个小时(我正在等待5-6个小时的循环时间)。