Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        /// <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);
            }
        }