示例#1
0
        //Метод-обработчик события: клик по кнопке C8 - аналогичен клику по C0
        private void С8_Click(object sender, EventArgs e)
        {
            if (Bloсking == false)
            {
                С8.Text = "X";
                Machine_Intelligence.GetIndexAndValue(С8.Name);

                string TargetName = GetTargetIndName();

                Button[] M = new Button[9] {
                    С0, С1, С2, С3, С4, С5, С6, С7, С8
                };
                foreach (Button x in M)
                {
                    if (x.Name.Equals(TargetName))
                    {
                        x.Text = "О";
                    }
                }
                if (MachineWins)
                {
                    CongratulationsO();
                }
            }
        }
示例#2
0
        /*метод класса, совершающий выбор индекса целевой ячейки
         * для хода машины, возвращающий ее имя в формате строки*/
        public static string GetTargetIndName()
        {
            //переменная - индекс целевой ячейки
            int TargetIndex;
            //переменная - имя целевой ячейки
            string Name;

            /*выбор ячейки может происходить двумя способами:
             * 1 - если он происходит в начале игры (если ходит первой Машина),
             * когда игровое поле пустое:*/
            if (FirstStMachine == true)
            {
                //тогда создается экземпляр класса Random для генерации случайного номера ячейки
                Random rand = new Random();
                //переменной индекса присваивается случайный номер
                TargetIndex = rand.Next(0, 8);
            }

            /*2 - если выбор ячейки происходит в ходе игры.
             * Тогда для получения индекса используется метод класса Playboard
             * */
            else
            {
                //переменной индекса присваивается результат, возвращаемый методом, анализирующим ситуацию на игровом поле
                TargetIndex = Machine_Intelligence.CombinationAnalysis(Board);
            }

            //элементу массива значений с соответствующим индексом присваивается нолик
            Board[TargetIndex] = "О";
            //Имя целевой ячейки составляется из буквы C и целевого индекса
            Name = "С" + TargetIndex;

            return(Name);
        }
示例#3
0
        //Метод-обработчик события: клик по кнопке С0: ход игрока и ответный ход машины
        public void С0_Click(object sender, EventArgs e)
        {
            if (Bloсking == false) //если поле не заблокировано, т.е. сейчас ход игрока:
            {
                С0.Text = "Х";     //меняем текст ячейки поля(кнопки) на крестик
                Machine_Intelligence.GetIndexAndValue(С0.Name);

                /*в результате анализа машиной текущей ситуации на поле получаем цифру - номер ячейки, в которую машина совершит ход
                 * и осуществляем ход машины*/
                string TargetName = GetTargetIndName();

                Button[] M = new Button[9] {
                    С0, С1, С2, С3, С4, С5, С6, С7, С8
                };
                foreach (Button x in M)
                {
                    if (x.Name.Equals(TargetName))
                    {
                        x.Text = "О";
                    }
                }
                if (MachineWins) //если ход машины оказался выигрышным, то игру можно далее не продолжать
                {
                    //вызов метода, если Нолики (Машина) победили
                    CongratulationsO();
                }
            }
        }