//Метод-обработчик события: клик по кнопке 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(); } } }
/*метод класса, совершающий выбор индекса целевой ячейки * для хода машины, возвращающий ее имя в формате строки*/ 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); }
//Метод-обработчик события: клик по кнопке С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(); } } }