Example #1
0
        /// <summary>
        /// Determines if there is a winner.
        /// If there is a winner, adds winning tiles to a queue.
        /// </summary>
        /// <param name="row">Game grid row.</param>
        /// <param name="column">Game grid column.</param>
        /// <returns>Is there a winner?</returns>
        private bool IsWinner(int row, int column)
        {
            if (IsColumnWin(column))
            {
                for (int i = 0; i < GridSize; i++)
                {
                    WinningTiles.Enqueue(string.Format("{0}{1}", i, column));
                }
                return(true);
            }

            if (IsRowWin(row))
            {
                for (int i = 0; i < GridSize; i++)
                {
                    WinningTiles.Enqueue(string.Format("{0}{1}", row, i));
                }
                return(true);
            }

            if (row == column && IsMainDiagonalWin())
            {
                for (int i = 0; i < GridSize; i++)
                {
                    WinningTiles.Enqueue(string.Format("{0}{1}", i, i));
                }
                return(true);
            }

            if (((row + column) == GridSize - 1) &&
                IsAntiDiagonalWin())
            {
                for (int i = 0; i < GridSize; i++)
                {
                    WinningTiles.Enqueue(string.Format("{0}{1}",
                                                       i,
                                                       GridSize - 1 - i));
                }
                return(true);
            }

            return(false);
        }
Example #2
0
        /// <summary>
        /// Register move on tile.
        /// </summary>
        /// <param name="tilePosition">Position of the move tile.</param>
        private void TileClick(string tilePosition)
        {
            if (IsGameOver)
            {
                ResetTileTextColour();
            }

            if (_ticTacToeModel.MakeHumanMove(tilePosition) == false)
            {
                /* Invalid move */
                return;
            }

            UpdateTileText();

            if (IsGameOver)
            {
                while (WinningTiles.Count != 0)
                {
                    SetTileTextColour(WinningTiles.Dequeue(), "LimeGreen");
                }
            }
        }