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; }
public VictoryStrategy(Mode mode) { if (mode == Mode.easy) { _VictoryStrategy = Victory.GetInstance(); } else { _VictoryStrategy = VictoryHard.GetInstance(); } }