root/as3/GameAI/trunk/src/FSMTest.as

リビジョン 1204, 1.4 kB (コミッタ: hael, コミット時期: 3 年 前)

--

Line 
1 package
2 {
3         import flash.display.Sprite;
4         import flash.text.TextField;
5         import flash.utils.getTimer;
6        
7         import jp.dip.hael.gameai.fsm.FSM;
8
9         /**
10          * @private
11          */
12         public class FSMTest extends Sprite
13         {
14                 public function FSMTest()
15                 {
16                         var fsm:FSM = new FSM();
17                        
18                         // 状態1→0.7の確率で2へ、0.3の確率で3へ
19                         fsm.registerState(state1, function():Boolean{ return true; }, [[state2, 0.7], [state3, 0.3]]);
20                        
21                         // 状態2→0.7の確率で1へ、そうでなければ遷移しない
22                         fsm.registerState(state2, function():Boolean{ return true; }, [[state1, 0.7]]);
23                        
24                         // 状態3→flag2がtrueなら2へ、falseなら1へ
25                         fsm.registerState(state3, function():Boolean{ return  flag2; }, [[state2, 1.0]]);
26                         fsm.registerState(state3, function():Boolean{ return !flag2; }, [[state1, 1.0]]);
27                        
28                         // 初期状態は1
29                         fsm.registerStartup(state1);
30                        
31                         var t:int = getTimer();
32                         for(var i:int = 0; i < 1000000; i++){
33                                 fsm.update();
34                         }
35                         var t1:int = getTimer() - t;
36                         var tf:TextField = new TextField();
37                         tf.text = t1 + "ms";
38                         addChild(tf);
39                 }
40                
41                 public function state1():void
42                 {
43 //                      trace("state1");
44 //                      flag2 = true;
45                 }
46                
47                 public function state2():void
48                 {
49 //                      flag2 = false;
50 //                      trace("state2");
51                 }
52                
53                 public function state3():void
54                 {
55 //                      trace("state3");
56                 }
57                
58                
59                 private var flag1:Boolean, flag2:Boolean, flag3:Boolean;
60         }
61 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。