コード例 #1
0
        public CraftingState FindBetterState(CraftingSim sim, IEnumerable <int> actions, CraftingState betterThan)
        {
            int l = sim.CraftingActionsLength;

            foreach (var i in actions)
            {
                CraftingSim s = new CraftingSim();
                sim.CopyTo(s, true);

                s.AddActions(true, C.CraftingActions[i]);
                CraftingState state = GetState(s);
                if (s.CurrentQuality >= s.CurrentRecipe.MaxQuality)
                {
                    if (state.ActionIds.Length < betterThan.ActionIds.Length)
                    {
                        return(state);
                    }
                }
                if (s.CraftingActionsLength == l)
                {
                    state.CanAddActions = false;
                }
                else
                {
                    NextStates.Add(state);
                    if (state.CanAddActions)
                    {
                        return(state.FindBetterState(s, actions, betterThan));
                    }
                }
            }

            return(null);
        }
コード例 #2
0
ファイル: State.cs プロジェクト: gzhebrunov/SchoolBot
 public bool IsCorrectAnswer(string answer)
 {
     if (NextStates.Count == 1 && NextStates[0].Item1.Options.Count == 1 && NextStates[0].Item1.Options.Contains(""))
     {
         return(true);
     }
     return(NextStates.Any(a => a.Item1.Equals(new Answer(answer))));
 }
コード例 #3
0
ファイル: State.cs プロジェクト: guaje93/SISE
 public void GenerateNextStates(string order)
 {
     foreach (char direction in order)
     {
         if (_mediator.IsMoveAllowed(this, direction))
         {
             NextStates.Add(_mediator.Move(this, direction));
         }
     }
 }
コード例 #4
0
ファイル: State.cs プロジェクト: gzhebrunov/SchoolBot
        public State GetNextState(string answer)
        {
            if (!IsCorrectAnswer(answer))
            {
                return(this);
            }

            if (NextStates.Count == 1 && NextStates[0].Item1.Options.Count == 1 && NextStates[0].Item1.Options.Contains(""))
            {
                return(NextStates[0].Item2);
            }

            return(NextStates.First(a => a.Item1.Equals(new Answer(answer))).Item2);
        }
コード例 #5
0
        private void UpdateCommands()
        {
            NextStates.Clear();

            foreach (var state in _adapter.AvailableForwardActions)
            {
                NextStates.Add(state);
            }

            foreach (var state in _adapter.AvailableBackwardActions)
            {
                NextStates.Add(state);
            }

            executeActionCommand?.RaiseCanExecuteChanged();
        }