/// <summary> /// Метод инициирует ход ПК и определяет 'результативность' хода ПК /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void СделатьХодПК(object sender, EventArgs e) { try { if (_NewGame) { if (_PreviousStep == _NextStep) { return; } Mode mode = Mode.easy; if (!this._Game.ПолучитьРежимСложностиИгры()) { mode = Mode.hard; } IVictory victory = new VictoryStrategy(mode); СделатьХод(victory.ПолучитьЯчейкуДляСледующегоХода(this._Game.ПолучитьСостояниеИгровогоПоля(), _NextStep)); } } catch (Exception ex) { _Service.ShowError(ex.Message); } }
/// <summary> /// Метод определяет 'результативность' хода пользователя /// </summary> /// <param name="sender"></param> private void СделатьХод(XOObject sender) { try { Mode mode = Mode.easy; if (!this._Game.ПолучитьРежимСложностиИгры()) { ; } mode = Mode.hard; _NewGame = true; _PreviousStep = _NextStep; if (sender.ХодСделан) { return; } if (_NextStep == СостояниеХода.X) { sender.Ход = СостояниеХода.X; _NextStep = СостояниеХода.O; } else { sender.Ход = СостояниеХода.O; _NextStep = СостояниеХода.X; } sender.ХодСделан = true; _Game.УстановитьСостояниеИгровогоПоля(sender); IVictory victory = new VictoryStrategy(mode); СостояниеХода?rez = victory.Победа(this._Game.ПолучитьСостояниеИгровогоПоля()); if (rez == null) { return; } if (rez == СостояниеХода.NULL) { DataBaseLogic.GetInstance().SetConnectDB("Requests_Database.sqlite").AddResultInTable(1, 1); _Service.ShowMessage("Draw, Try again!"); } if (rez == СостояниеХода.X) { DataBaseLogic.GetInstance().SetConnectDB("Requests_Database.sqlite").AddResultInTable(1, 0); _Service.ShowMessage("The crosses won!"); } if (rez == СостояниеХода.O) { DataBaseLogic.GetInstance().SetConnectDB("Requests_Database.sqlite").AddResultInTable(0, 1); _Service.ShowMessage("Zeroes won!"); } УстановитьПараметрыПоУмолчанию(null, EventArgs.Empty); _NewGame = false; } catch (Exception ex) { _Service.ShowError(ex.Message); } }