0

我进入了一个资源游戏模拟项目。我要做的是...

“如果有足够的可用资源,则会满足请求,并且将从可用数量中减去请求的数量。如果没有足够的资源,则动画会消耗可用的数量并等待更多的资源可用。”

问题是我如何使这成为可能......减少资源,然后在某个地方保留仍然需要的东西,并在有可用资源时减少它(如贷款)......

例子:

... 需要 100 枚金币.... 但是 ... 50 枚金币可用...

... 减少 50 黄金... 等到黄金>=50 然后

... 减少 50 黄金...

ETC...

示例代码...

    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
    }
}

(编辑后)现在的最佳解决方案:

实际上......我想只是减少​​木材的所需值,然后如果数字变为负数,我保持负值将其变为正值

数学.abs();

所以如果木头是 30 并且我想要 100... 我做 30-100=-70; 然后贷款=-70;...

然后我 Math.abs(loan); 所以贷款=70;

然后我做了一个if(wood>loan){ wood=wood-loan}//我可能需要睡觉直到木头再次刷新......就是这样......我仍然不知道生产者/消费者的东西是什么......

4

2 回答 2

1

因此,您正在寻找的解决方案是众所周知的,并且在计算机科学中得到了广泛的研究。问题本身称为生产者消费者问题。对此进行搜索,您将找到许多解决问题的示例和代码。

这是一个关于它的stackoverflow问题,Producer/Consumer threads using a Queue

维基百科页面详细解释了这个问题。

于 2013-05-13T18:48:56.920 回答
0

考虑创建一个未完成的请求对象;只是资源类型和未偿金额。然后每次需要筹集其中一项债务时,将一项添加到数组列表中。然后每个游戏循环(你是如何在游戏中实现的)检查未完成的列表,如果可以的话,借给资源

于 2013-05-13T18:38:17.393 回答