7

私はテキスト ゲームを書いていますが、単純な戦闘システムが必要です。MUD のように、コマンドを発行すると、たまに「ティック」が発生し、それらすべてのコマンドが実行されると、プレイヤーとモンスターがダメージを与えます。起こります。そのコンセプトをどのように実装しますか?最後のティック時間を保持する変数と、イベントをスタックに置き、その時間が (時間 + x) になるとそれらをすべて同時に実行する関数を作成することを考えました。それを行うためのより簡単でクリーンなバリアントはありますか?

そのために可能な構文は何ですか?

double lastTickTime;
double currentTime;

void eventsPile(int event, int target)
{
// how do i implement stack of events? And send them to execute() when time is up?
}

void execute(int event, int target)
{
     if ((currentTime - lastTickTime) == 2)
     {
         eventsHandler(event, target);
     }    
     else 
     { // How do I put events on stack?
     }
}
4

3 に答える 3

3

単純なアクション スタックの問題は、アクションの順序がおそらく時間ベースになることです。最も速く入力した人が最初のヒットを打つことになります。たとえば、すべてのグローバルイベントが最初にトリガーされ、次にクリーチャーのアクションイベントがトリガーされるように、スタックに優先順位を導入する必要がありますが、これらのアクションイベントは、敏捷性やレベルなどの属性によって順序付けられます。クリーチャーの敏捷性が高い場合、最初のヒットを取得します。

于 2010-11-20T19:42:57.497 に答える
-1

xミリ秒ごとに実行するタイマーを使用し(xはティックタイムです)、そのメソッドでスタックに置かれたアクションを実行します。

于 2010-11-20T19:32:29.640 に答える