私はゲームを作成していると私は、この問題でこだわっている:Javaのコールバック関数または静的クラス
私はクラスのゲームを持っているし、ゲーム内で、私はキッチンがあります。 プレイヤーが次のように入力した場合:/ new egg私は:game.kitchen.newEgg()
どのような最善の方法であり、どのように私は卵が完了したことをゲームに通知することができます知っていると思います。
Gameクラスを静的に入れてみましたが、正しくないようです。
は、私はまた、1秒ごとのゲームコールkitchen.isReady()(どちらもこれが正しいように見えるん)を試してみましたが、私の最後の試みは、このような消費者の作成した:
public class Kitchen {
public void newEgg(String name, Consumer<String> function){
System.out.println("egg is in progress");
try {
Thread.sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
function.accept(name);
}
}
と中をゲーム:
public void createEgg(String eggName){
System.out.println("Creating an Egg");
Kitchen egg = new Kitchen();
Gamex x = new Gamex();
Runnable task2 =() -> { egg.newEgg(eggName, x::eggCreated); };
new Thread(task2).start();
System.out.println("game continue...");
}
public void eggCreated(String eggName) {
System.out.println("Egg: " + eggName + " finished.");
}
すべてのツリーメソッドは機能しましたが、これは正しい方法ですか? どうすればいいですか? ゲームに最適なソリューションは何ですか?
あなたの意図が何であるかはまだ不明です。並行プログラミングを扱っていることに言及し、それぞれのアクティブなエンティティを記述します。 –
あなたはどこでも 'newEgg()'を呼び出すことはありません。 'egg.applyFunction()'はどこにありますか?そして、あなたは何をつかまえていますか? – shmosel
メソッド名を修正しました。ごめんなさい。 @ E_net4:私はキッチンを含むエンジン(ゲーム)を持っています。キッチンは卵を作る責任がある。それが終わると、何らかの理由でゲームに通知したいと思っています(ユーザーポイントを更新し、お金を減らしています...など...)。私の質問です。それにはどのような方法がありますか?私の提案の一つ?他のものは完全に異なっていますか?ありがとう。 –