Java资源 - 游戏模拟

时间:2013-05-13 18:31:33

标签: java multithreading resources simulation producer-consumer

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

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

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

示例:

......需要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} //我可能需要睡觉,直到木头再次刷新......就是这样......  我仍然不知道生产者/消费者的东西是什么......

2 个答案:

答案 0 :(得分:1)

因此,您正在寻找的解决方案是众所周知的,并在计算机科学中进行了大量研究。问题本身称为生产者消费者问题。搜索一下,你会发现很多例子和代码来解决这个问题。

以下是关于它的stackoverflow问题,Producer/Consumer threads using a Queue

Wikipedia page详细解释了这个问题。

答案 1 :(得分:0)

考虑创建一个未实现的请求对象;只是资源类型和未付金额。每当需要筹集其中一笔债务时,再向一个arraylist添加一个。然后每个游戏循环(你如何在游戏中实现它)检查未完成的列表,如果可以的话,还可以负担资源