Exemple #1
0
        /// <summary>
        /// Метод определяет следующий ход в игре для ПК
        /// </summary>
        /// <param name="value">Массив обьектов текущего состояния игрового поля</param>
        /// <param name="nextStep">Текущий игрок Х или О</param>
        /// <returns></returns>
        public XOObject ПолучитьЯчейкуДляСледующегоХода(XOObject[] value, СостояниеХода nextStep)
        {
            XOObject result = null;

            result = ПроверитьВозможностьСвоегоВыйгрыша(value, nextStep);
            if (result == null)
            {
                result = НедопуститьВыйгрышСоперника(value, nextStep);
            }

            if (result == null)
            {
                result = ВыбратьОптимальныйХод(value);
            }

            return(result);

            // return ВыбратьОптимальныйХод(value);
        }
Exemple #2
0
        /// <summary>
        /// Метод оределяет возможно ли на данном этапе завершить игру
        /// </summary>
        /// <param name="value">Массив обьектов текущего состояния игрового поля</param>
        /// <param name="nextStep">Текущий игрок Х или О</param>
        /// <returns></returns>
        private XOObject ПроверитьВозможностьСвоегоВыйгрыша(object[] value, СостояниеХода nextStep)
        {
            XOObject cell_0 = value[0] as XOObject;
            XOObject cell_1 = value[1] as XOObject;
            XOObject cell_2 = value[2] as XOObject;
            XOObject cell_3 = value[3] as XOObject;
            XOObject cell_4 = value[4] as XOObject;
            XOObject cell_5 = value[5] as XOObject;
            XOObject cell_6 = value[6] as XOObject;
            XOObject cell_7 = value[7] as XOObject;
            XOObject cell_8 = value[8] as XOObject;

            #region 1
            if ((cell_0.Ход == nextStep) && (cell_2.Ход == nextStep) && (cell_1.Ход == СостояниеХода.NULL))
            {
                return(cell_1);
            }
            if ((cell_3.Ход == nextStep) && (cell_5.Ход == nextStep) && (cell_4.Ход == СостояниеХода.NULL))
            {
                return(cell_4);
            }
            if ((cell_6.Ход == nextStep) && (cell_8.Ход == nextStep) && (cell_7.Ход == СостояниеХода.NULL))
            {
                return(cell_7);
            }
            if ((cell_0.Ход == nextStep) && (cell_6.Ход == nextStep) && (cell_3.Ход == СостояниеХода.NULL))
            {
                return(cell_3);
            }
            if ((cell_1.Ход == nextStep) && (cell_7.Ход == nextStep) && (cell_4.Ход == СостояниеХода.NULL))
            {
                return(cell_4);
            }
            if ((cell_2.Ход == nextStep) && (cell_8.Ход == nextStep) && (cell_5.Ход == СостояниеХода.NULL))
            {
                return(cell_5);
            }
            if ((cell_0.Ход == nextStep) && (cell_8.Ход == nextStep) && (cell_4.Ход == СостояниеХода.NULL))
            {
                return(cell_4);
            }
            if ((cell_2.Ход == nextStep) && (cell_6.Ход == nextStep) && (cell_4.Ход == СостояниеХода.NULL))
            {
                return(cell_4);
            }
            #endregion

            #region 2
            if ((cell_1.Ход == nextStep) && (cell_2.Ход == nextStep) && (cell_0.Ход == СостояниеХода.NULL))
            {
                return(cell_0);
            }
            if ((cell_4.Ход == nextStep) && (cell_5.Ход == nextStep) && (cell_3.Ход == СостояниеХода.NULL))
            {
                return(cell_3);
            }
            if ((cell_7.Ход == nextStep) && (cell_8.Ход == nextStep) && (cell_6.Ход == СостояниеХода.NULL))
            {
                return(cell_6);
            }
            if ((cell_3.Ход == nextStep) && (cell_6.Ход == nextStep) && (cell_0.Ход == СостояниеХода.NULL))
            {
                return(cell_0);
            }
            if ((cell_4.Ход == nextStep) && (cell_7.Ход == nextStep) && (cell_1.Ход == СостояниеХода.NULL))
            {
                return(cell_1);
            }
            if ((cell_5.Ход == nextStep) && (cell_8.Ход == nextStep) && (cell_2.Ход == СостояниеХода.NULL))
            {
                return(cell_2);
            }
            if ((cell_4.Ход == nextStep) && (cell_8.Ход == nextStep) && (cell_0.Ход == СостояниеХода.NULL))
            {
                return(cell_0);
            }
            if ((cell_4.Ход == nextStep) && (cell_6.Ход == nextStep) && (cell_6.Ход == СостояниеХода.NULL))
            {
                return(cell_2);
            }
            #endregion

            #region 3
            if ((cell_0.Ход == nextStep) && (cell_1.Ход == nextStep) && (cell_2.Ход == СостояниеХода.NULL))
            {
                return(cell_2);
            }
            if ((cell_3.Ход == nextStep) && (cell_4.Ход == nextStep) && (cell_5.Ход == СостояниеХода.NULL))
            {
                return(cell_5);
            }
            if ((cell_6.Ход == nextStep) && (cell_7.Ход == nextStep) && (cell_8.Ход == СостояниеХода.NULL))
            {
                return(cell_8);
            }
            if ((cell_0.Ход == nextStep) && (cell_3.Ход == nextStep) && (cell_6.Ход == СостояниеХода.NULL))
            {
                return(cell_6);
            }
            if ((cell_1.Ход == nextStep) && (cell_4.Ход == nextStep) && (cell_7.Ход == СостояниеХода.NULL))
            {
                return(cell_7);
            }
            if ((cell_2.Ход == nextStep) && (cell_5.Ход == nextStep) && (cell_8.Ход == СостояниеХода.NULL))
            {
                return(cell_8);
            }
            if ((cell_0.Ход == nextStep) && (cell_4.Ход == nextStep) && (cell_8.Ход == СостояниеХода.NULL))
            {
                return(cell_8);
            }
            if ((cell_2.Ход == nextStep) && (cell_4.Ход == nextStep) && (cell_6.Ход == СостояниеХода.NULL))
            {
                return(cell_6);
            }
            #endregion

            return(null);
        }