4

私はボードゲームを構築しようとしています...そして、ステートマシンを使用して実装する必要があるようです..

GoFのState パターンについては知っていますが、ステート マシンを実装する方法は他にもあるはずです。お知らせください..異なる実装 (それぞれのトレードオフ) に関する詳細を含む記事や本を知っている場合は、私に指示してください.. ありがとう

4

4 に答える 4

3

Ragelをチェックしてください。

于 2008-12-29T20:56:18.343 に答える
2

Harel のステートチャートを使用しました (ステート マシンに類似/同等ですが、考えるのはやや簡単です) 。 Practical Statecharts in C/C++という優れた本があります。

于 2008-12-29T21:04:29.310 に答える
1

非常に単純なFSMの実装は次のとおりです。

public delegate void ProcessEvent<TEvent>(TEvent ev);

public abstract class StateMachine<TEvent>
{
    private ProcessEvent<TEvent> state;

    protected ProcessEvent<TEvent> State
    {
        get { return this.state; }
        set { this.state = value; }
    }

    public void ProcessEvent(TEvent ev)
    {
        this.state(ev);
    }
}

次のように使用します。

public class MyFsm : StateMachine<byte>
{
    public MyFsm()
    {
        this.State = this.Started;
    }

    private void Started(byte ev)
    {
        Console.WriteLine(ev);

        if (ev == 255)
        {
            this.State = this.Stopped;
        }
    }

    private void Stopped(byte ev) { }
}

class Program
{
    static void Main(string[] args)
    {
        MyFsm fsm = new MyFsm();
        fsm.ProcessEvent((byte) 0);
        fsm.ProcessEvent((byte) 255);
        fsm.ProcessEvent((byte) 0);
    }
}
于 2008-12-29T20:05:48.040 に答える
0

有限ステート マシンは、すべてイベント駆動型のゲームを実装するための最適なプラットフォームを提供します。

目標はステート マシンを構築することなので、既存のフレームワークを使用できます。あとは、イベント エクストラクタとアクションを追加するだけです。

フレームワークの例は次の場所にあります。

http://www.StateSoft.org

于 2012-01-16T22:29:42.130 に答える