2008-12-29 88 views
4

我想建立一个棋盘游戏...看起来像它具有使用状态机来实现..状态机实现

我知道State pattern从GoF的,但我相信一定有其他方式来实现状态机。请让我知道..如果你知道包含不同的实现细节(权衡他们每个人的)任何文章或书籍,请告诉我..谢谢

+0

确定一个状态机是适用于棋盘游戏:

一个例子框架可以看出?对我来说似乎很陌生。 – starblue 2008-12-29 21:30:51

+1

你想实现游戏服务器还是游戏的电脑玩家?在第一种情况下,状态机是有意义的,在第二种情况下它的意义不大。 – wildplasser 2012-01-16 22:37:30

回答

1

这里是一个非常简单的FSM实现:

如下你会使用它:

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); 
    } 
} 
+0

我认为这是C#?这将有助于澄清哪种语言(看起来不像Java或C++) – 2008-12-31 13:20:45

2

我们已经使用了哈雷尔的状态图(与状态机相似/相当,但稍微容易思考),还有一本好书Practical Statecharts in C/C++

0

有限状态机提供了实现所有事件驱动的游戏的最佳平台。

既然你的目标是建立状态机,你可以使用一个现有的框架,而你所需要的只是添加你的事件提取器和动作。

http://www.StateSoft.org