コード例 #1
0
        /// <summary>
        /// A játékos kiválaszt egy mezőt a táblán, és meghívódik rá a következő lépés. Csak a felületen történő kattintásra hívódik meg
        /// </summary>
        /// <param name="id"></param>
        public void FieldChosen(int id)
        {
            if (nextIsCPU)
            {
                return;
            }
            TicTacToeElement element = Elements[id];

            if (!element.IsEnabled)
            {
                return;
            }

            NextStep(element);
        }
コード例 #2
0
        /// <summary>
        /// Lép egyet a kiválasztott elemmel a következő játékos
        /// </summary>
        /// <param name="element"></param>
        private void NextStep(TicTacToeElement element)
        {
            if (!Player)
            {
                element.Text  = "X";
                element.Color = "Red";
            }
            else
            {
                element.Text  = "O";
                element.Color = "Green";
            }

            ChangePlayer();

            element.IsEnabled = false;

            int player = Player ? 2 : 1;

            _model.UpdateTable(element.X, element.Y, player);


            #region Evaluations on screen for testing

            fieldValues.Clear();
            foreach (TicTacToeElement _element in Elements)
            {
                if (_model.CanPlace(_element.X, _element.Y))
                {
                    if (_model.ValueTableValue(_element.X, _element.Y) == "0")
                    {
                        if (ShowEvaluate)
                        {
                            _element.Text = "";
                        }
                    }
                    else
                    {
                        if (ShowEvaluate)
                        {
                            _element.Text = _model.ValueTableValue(_element.X, _element.Y);
                        }
                        fieldValues.Add(new Tuple <int, int, int>(_element.X, _element.Y, int.Parse(_model.ValueTableValue(_element.X, _element.Y))));
                    }
                }
            }

            #endregion


            bool end = _model.IsGameOver();
            if (end)
            {
                if (GameEnded != null)
                {
                    GameEnded(this, new WinEventArgs(PlayerToString(Player)));
                    return;
                }
            }

            if (PC && Player)
            {
                nextIsCPU = true;
                CPUStep();
            }
            else if (PC && !Player)
            {
                nextIsCPU = false;
            }
            else if (CC)
            {
                nextIsCPU = true;
                CPUStep();
            }
        }