プレイヤーが味方の行動をプログラムできるプログラミングゲームを作っています。プレーヤーは、任意の Java コードで埋めることができますが、アクションを返さなければならない、特定の味方の決定() 関数の本体を作成します。各味方にセットを与え、ティックごとの計算量を制限したいので、1) エンティティを追加してもゲームの速度が遅くなりすぎないようにし、2) エンティティが計算に費やす時間がゲームに反映されるようにします。行動する頻度が減るだろうと「考える」ことに多くの時間を費やします。これがどのように機能するかについての私のインスピレーションはBattlecode です。これは、ユニットにターンごとに一定量のバイトコードを与え、その後計算を一時停止し、プログラマーに物事が変化したときに気付くように対処させます。
私の質問は、スレッドで決定機能を実行しているエンティティを一時停止して再開する方法です。これを行う「適切な」方法は、スレッドを一時停止して時々チェックするようにフラグを設定することだと理解していますが、プレーヤーに決定()関数内のフラグを強制的にチェックさせることはできないため、私はスレッドを一時停止する方法がわかりません。エンティティは世界の固定表現のみを見ており、列挙値を返す必要があるだけなので、何かをロックする必要はないと思いますが、廃止されたものを使用するよりもこれを行うためのより良い方法があることを願っていますスレッド一時停止メソッド。私はプレイヤーがコードを書く方法を変更することにオープンですが、決定ループを書くことを混乱させたり面倒にしたりせずに一時停止フラグのチェックをユーザーから隠しながらそれを行う方法を思いつきません。