Exemple #1
0
        public XOObject ПолучитьЯчейкуДляСледующегоХода(XOObject[] value, СостояниеХода nextStep)
        {
            int[] previous_step_arr = new int[9];
            int[] next_step_arr     = null;

            for (int i = 0; i < value.Length; i++)
            {
                previous_step_arr[i] = ПолучитьЧисловоеПредставлениеХода(value[i].Ход);
            }

            Component parent_com = _VictoryComposite.FindChild(previous_step_arr);

            if (parent_com == null)
            #region Временное решение из за неполноты Дерева стратегий
            {
                return(Victory.GetInstance().ПолучитьЯчейкуДляСледующегоХода(value, nextStep));
            }
            #endregion

            System.Collections.ArrayList clilds = parent_com.GetChilds();

            if (clilds == null)
            #region Временное решение из за неполноты Дерева стратегий
            {
                return(Victory.GetInstance().ПолучитьЯчейкуДляСледующегоХода(value, nextStep));
            }
            #endregion

            Random rnd      = new Random();
            int    maxValue = (clilds.Count - 1) < 0 ? 0 : (clilds.Count - 1);
            next_step_arr = ((Component)clilds[rnd.Next(0, maxValue)]).ToIntArray();

            if (next_step_arr == null)
            #region Временное решение из за неполноты Дерева стратегий
            {
                return(Victory.GetInstance().ПолучитьЯчейкуДляСледующегоХода(value, nextStep));
            }
            #endregion

            for (int i = 0; i < value.Length; i++)
            {
                if (ПолучитьЧисловоеПредставлениеХода(value[i].Ход) != next_step_arr[i])
                {
                    return new XOObject()
                           {
                               ID = value[i].ID, Ход = СостояниеХода.NULL, ХодСделан = false
                           }
                }
                ;
            }

            #region Временное решение из за неполноты Дерева стратегий
            return(Victory.GetInstance().ПолучитьЯчейкуДляСледующегоХода(value, nextStep));

            #endregion

            //return null;
        }
Exemple #2
0
 public VictoryStrategy(Mode mode)
 {
     if (mode == Mode.easy)
     {
         _VictoryStrategy = Victory.GetInstance();
     }
     else
     {
         _VictoryStrategy = VictoryHard.GetInstance();
     }
 }