【问题标题】:Java Resource-Game Simulation [closed]Java资源游戏模拟[关闭]
【发布时间】:2023-03-31 11:54:01
【问题描述】:

我正在参与一个资源游戏模拟项目。我要做的是……

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

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

例子:

... 需要 100 GOLD.... 但是 ... 50 GOLD 可用...

... 减少 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
    }
}

(编辑后) 目前最好的解决方案:

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

数学.abs();

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

然后我 Math.abs(loan);这样loan=70;

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

【问题讨论】:

  • 语句“等到资源可用”意味着你有生产者线程和消费者线程。生产者-消费者同步的详细解释远远超出了 SO 的范围,这是针对特定编程问题的。在网上搜索有关多线程编程的教程,特别是“生产者-消费者”。另外,请阅读FAQHow to Ask 以更好地了解如何写出好问题。
  • @JimGarrison 我不同意这超出了 SO 范围,但这种游戏可以在没有多线程的情况下通过简单的游戏循环来实现
  • 超出 SO 范围??那是什么?
  • 技术上 SO(堆栈溢出)适用于普遍感兴趣的问题和答案,而不仅仅是提问者。 (尽管这个规则经常被忽略,因为这是一个礼貌的、写得很好的问题)。有关详细信息,请参阅常见问题解答
  • 这不仅是为了我......我的同学也在寻找这个信息......如果这很重要

标签: java multithreading resources simulation producer-consumer


【解决方案1】:

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

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

Wikipedia page详细解释问题。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 2012-06-19
      • 1970-01-01
      相关资源
      最近更新 更多