문제
나는 보드 게임을 만들려고 노력하고 있습니다 ... 상태 기계를 사용하여 구현 해야하는 것 같습니다 ..
나는 그것을 알고있다 상태 패턴 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);
}
}
유한 상태 기계는 모든 이벤트 중심의 게임을 구현하기위한 최고의 플랫폼을 제공합니다.
목표는 상태 머신을 구축하는 것이므로 기존 프레임 워크를 사용할 수 있으며 필요한 것보다 이벤트 추출기와 작업을 추가하는 것입니다.
한 가지 예제 프레임 워크에서 볼 수 있습니다.
제휴하지 않습니다 StackOverflow