0

私はリソース ゲーム シミュレーションのプロジェクトに参加しています。私がしなければならないことは...

「利用可能なリソースが十分にある場合、要求は満たされ、要求された数量は利用可能な数量から差し引かれます。十分なリソースがない場合、アニマットは利用可能な数量を消費し、より多くのリソースが利用可能になるのを待ちます。」

問題は、これをどのように可能にするかです...リソースを減らして、まだ必要なものをどこかに保持し、利用可能なリソース(ローンなど)があるときにそれを減らすには...

例:

... 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(loan); したがって、loan=70;

そして、if(wood>loan){ wood=wood-loan}//木材が再びリフレッシュされるまでスリープ状態にする必要があるかもしれません...それだけです...プロデューサー/コンシューマーが何であるかはまだわかりません...

4

2 に答える 2

1

したがって、探しているソリューションはよく知られており、コンピューター サイエンスでよく研究されています。この問題自体は生産者消費者問題と呼ばれます。これを検索すると、問題を解決するための多数の例とコードが見つかります。

これに関するstackoverflowの質問、プロデューサー/コンシューマースレッドがキューを使用しています。

問題を詳細に説明しているウィキペディアのページ。

于 2013-05-13T18:48:56.920 に答える