ああ、こんにちは。私はいくつかの2Dタイルベースのゲームで自由な時間に働いているジュニアJava開発者です。今では、さまざまなタイプのオブジェクトが互いにどのように相互作用するのか、ゲームの基本的なものを実装しようとしています。 シングルトンティッカー(独自のスレッドで実行中)がサブスクライブされたオブジェクトに.tick()を通知すると、それらのオブジェクトは以前に割り当てられたコマンドオブジェクトを実行します。今私は、いくつかの呪文をチャネリング1のお尻を蹴ったり上のポイントに実行されているような、より複雑なアクションのスケルトン実装を書きたいuhmのようなトリッキーなアクションの抽象実装
abstract class Character extends AbstractActing {
void tick() {
action.execute();
}
private void pickUp(Item item) {
inventory.add(item);
}
private IAction action;
//...
class PickUp implements IAction {
void execute() {
//check if allowed to do
pickUp(item)
}
PickUp(Item item) {
this.item = item;
}
private Item item;
}
}
:いくつかのオブジェクトを拾うような 実装するシンプルなワンダニの活動は次のように、非常に簡単でした地図。私は、これらの複雑なアクションを表すオブジェクトが、内部で単純なアトミック命令のキューにそれらを埋め込んでいると思います。たとえば、 "Walk(Location x)"コマンドは、内部でPathfindingアルゴリズムを使用して "DoOneStep(Direction d)"のキューを作成し、途中で何かが発生した場合に再構築することができます。 問題は、1つのアトミックステップでは、Characterの速度や地面タイプのようにさらに多くの情報を実行する必要があることです。ところで、キャラクターのスピードに応じて、私はキャラクターの本当の位置を1ダニごとに変えたくないかもしれません。私は、計算に関連するオブジェクトを観察し、状態を更新するAction内にいくつかのステップ実行オブジェクトを追加する必要があると思います。
私のクエストオン(最終的に!)は - 私が瞑想するためにいくつかのよく知られたデザインパターンがありますか?私のコードは、すべての編集でわかりにくくなり、継承できなくなります。多分私は演技システム全体を書き直すでしょうか?
大変ありがとうございます!ステートマシンがぴったりのようだ – 0andvoid