我正在进入一个资源游戏模拟项目。我要做的是......
“如果有足够的可用资源,将满足请求,并从可用数量中减去请求的数量。如果资源不足,动画消耗可用数量并等待更多资源可用。“
问题是如何使这成为可能......减少资源然后保留仍然需要的地方,并在有可用资源(如贷款)时减少资源......
示例:
......需要100金......但是...... 50金可用......
......通过50减少黄金......等待直到黄金> = 50然后
......减少50美元的黄金......
等...
示例代码......
public void feedArmy(){
if(food>=100){
food=food-100;
System.out.println("*Feed Soldiers (-100 Food)");
System.out.println(toString());
}
else{
System.out.println("*Feed Soldiers (-100 Food)");
System.out.println("-Not Enough Food!"); //get loan instead
}
}
(编辑后) 现在最佳解决方案:
实际上......我想到的只是减少木材的所需值,然后如果数字变为负值,我保持负值将其转为正值
Math.abs();
所以,如果木头是30,我想要100 ...我做30-100 = -70;然后贷款= -70; ...
然后我Math.abs(贷款);所以贷款= 70;然后我做了if(wood>loan){ wood=wood-loan}
//我可能需要睡觉,直到木头再次刷新......就是这样......
我仍然不知道生产者/消费者的东西是什么......
答案 0 :(得分:1)
因此,您正在寻找的解决方案是众所周知的,并在计算机科学中进行了大量研究。问题本身称为生产者消费者问题。搜索一下,你会发现很多例子和代码来解决这个问题。
以下是关于它的stackoverflow问题,Producer/Consumer threads using a Queue。
Wikipedia page详细解释了这个问题。
答案 1 :(得分:0)
考虑创建一个未实现的请求对象;只是资源类型和未付金额。每当需要筹集其中一笔债务时,再向一个arraylist添加一个。然后每个游戏循环(你如何在游戏中实现它)检查未完成的列表,如果可以的话,还可以负担资源