문제

나는 보드 게임을 만들려고 노력하고 있습니다 ... 상태 기계를 사용하여 구현 해야하는 것 같습니다 ..

나는 그것을 알고있다 상태 패턴 GOF로부터, 그러나 나는 State Machine을 구현할 수있는 다른 방법이 있어야한다고 확신합니다. 알려주세요 .. 다른 구현에 대한 세부 정보가 포함 된 기사 나 책을 알고 있다면 (각각의 트레이드 오프) 저를 지시 해주세요 .. 감사합니다.

도움이 되었습니까?

해결책

체크 아웃 ragel.

다른 팁

우리는 Harel의 StateCharts를 사용했습니다 (주 머신과 유사하지만 생각하기가 다소 쉽습니다). C/C ++의 실용적인 statecharts.

매우 간단한 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);
    }
}

유한 상태 기계는 모든 이벤트 중심의 게임을 구현하기위한 최고의 플랫폼을 제공합니다.

목표는 상태 머신을 구축하는 것이므로 기존 프레임 워크를 사용할 수 있으며 필요한 것보다 이벤트 추출기와 작업을 추가하는 것입니다.

한 가지 예제 프레임 워크에서 볼 수 있습니다.

http://www.statesoft.org

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top