// DISTANCE,ES_ATTACK,MS_STAND,MS_NEAR,MS_FAR,OUTPUT , ES_STAND,ES_NEAR,ES_FAR,MS_ATTACK, public void UpdateAIState(WindowsGame2.AI.OUTPUT state) { WindowsGame2.AI.InputData input = GetInputData(); _LastAction = state; //float _Learning.AddData(input, state); }
public override void Update(GameTime gameTime) { base.Update(gameTime); if (CombatSprite.GetcurrentAnimation() != null && CombatSprite.GetcurrentAnimation().IsLoop == false) { if (CombatSprite.IsPlaybackComplete == false) { return; } State = RolePlayingGameData.Character.CharacterState.Idle; } switch (State) { case RolePlayingGameData.Character.CharacterState.Walking: case RolePlayingGameData.Character.CharacterState.Idle: WindowsGame2.AI.InputData input = GetInputData(); _CurAIState = MyLearning.I.GetNextAction(input); break; } switch (_CurAIState) { case OUTPUT.STAND: State = RolePlayingGameData.Character.CharacterState.Idle; break; case OUTPUT.ATTACK: State = RolePlayingGameData.Character.CharacterState.Attack; break; case OUTPUT.FAR: break; } }
public OUTPUT GetNextAction(InputData input) { string strOutPut = _Learning.Estimate(input._Input); if (strOutPut == null) return OUTPUT.STAND; OUTPUT output = (OUTPUT)Enum.Parse(typeof(OUTPUT), strOutPut); return output; }
public void AddData(InputData input,OUTPUT output ) { StringBuilder s = new StringBuilder(); s.Append("["); int c = 0; foreach (var item in input._Input) { switch ((INPUT)c) { case INPUT.ES_STAND: case INPUT.MS_STAND: case INPUT.MS_STAND2: case INPUT.MS_STAND3: s.Append("["); s.Append(item.ToString()); break; case INPUT.ES_DODGE: case INPUT.MS_DODGE: case INPUT.MS_DODGE2: case INPUT.MS_DODGE3: s.Append(item.ToString()); s.Append("]"); break; default: s.Append(item.ToString()); break; } c++; } s.Append("] ["); s.Append(output.ToString()); s.Append("]"); _form.listBox1.Items.Insert(0,s.ToString()); KLearnData data = new KLearnData(); data._Input = input._Input; data._Symbol = output.ToString(); _Learning.Run(data); }