2008-12-29 163 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