示例#1
0
    private Square CheckRow(int row, Square[,] gameBoard, Square.State condition)
    {
        Square[]       squares = new Square[3];
        Square.State[] states  = new Square.State[3];

        squares[0] = gameBoard[row, 0];
        squares[1] = gameBoard[row, 1];
        squares[2] = gameBoard[row, 2];

        states[0] = squares[0].owner;
        states[1] = squares[1].owner;
        states[2] = squares[2].owner;

        // x x _
        if (states[0] == condition && states[1] == condition && states[2] == Square.State.Empty)
        {
            return(squares[2]);
        }

        // x _ x
        if (states[0] == condition && states[1] == Square.State.Empty && states[2] == condition)
        {
            return(squares[1]);
        }

        // _ x x
        if (states[0] == Square.State.Empty && states[1] == condition && states[2] == condition)
        {
            return(squares[0]);
        }

        return(null);
    }
示例#2
0
    private Square RightToLeftDiag(Square[,] gameBoard, Square.State condition)
    {
        Square[]       squares = new Square[3];
        Square.State[] states  = new Square.State[3];

        squares[0] = gameBoard[0, 2];
        squares[1] = gameBoard[1, 1];
        squares[2] = gameBoard[2, 0];

        states[0] = squares[0].owner;
        states[1] = squares[1].owner;
        states[2] = squares[2].owner;

        //     x
        //   x
        // _
        if (states[0] == condition && states[1] == condition && states[2] == Square.State.Empty)
        {
            return(squares[2]);
        }

        //     x
        //   _
        // x
        if (states[0] == condition && states[1] == Square.State.Empty && states[2] == condition)
        {
            return(squares[1]);
        }

        //     _
        //   x
        // x
        if (states[0] == Square.State.Empty && states[1] == condition && states[2] == condition)
        {
            return(squares[0]);
        }

        return(null);
    }
示例#3
0
    private Square CheckColumn(int column, Square[,] gameBoard, Square.State condition)
    {
        Square[]       squares = new Square[3];
        Square.State[] states  = new Square.State[3];

        squares[0] = gameBoard[0, column];
        squares[1] = gameBoard[1, column];
        squares[2] = gameBoard[2, column];

        states[0] = squares[0].owner;
        states[1] = squares[1].owner;
        states[2] = squares[2].owner;

        // x
        // x
        // _
        if (states[0] == condition && states[1] == condition && states[2] == Square.State.Empty)
        {
            return(squares[2]);
        }

        // x
        // _
        // x
        if (states[0] == condition && states[1] == Square.State.Empty && states[2] == condition)
        {
            return(squares[1]);
        }

        // _
        // x
        // x
        if (states[0] == Square.State.Empty && states[1] == condition && states[2] == condition)
        {
            return(squares[0]);
        }

        return(null);
    }
示例#4
0
    private Square CheckForCondition(Square.State condition)
    {
        Square squareToPick = null;

        Square[,] gameBoard = board.GameBoard;

        // Check top row
        squareToPick = CheckRow(0, gameBoard, condition);
        if (squareToPick != null)
        {
            return(squareToPick);
        }

        // Check middle row
        squareToPick = CheckRow(1, gameBoard, condition);
        if (squareToPick != null)
        {
            return(squareToPick);
        }

        // Check bottom row
        squareToPick = CheckRow(2, gameBoard, condition);
        if (squareToPick != null)
        {
            return(squareToPick);
        }

        // Check left column
        squareToPick = CheckColumn(0, gameBoard, condition);
        if (squareToPick != null)
        {
            return(squareToPick);
        }

        // Check middle column
        squareToPick = CheckColumn(1, gameBoard, condition);
        if (squareToPick != null)
        {
            return(squareToPick);
        }

        // Check right column
        squareToPick = CheckColumn(2, gameBoard, condition);
        if (squareToPick != null)
        {
            return(squareToPick);
        }

        // Check left to right diag column
        squareToPick = LeftToRightDiag(gameBoard, condition);
        if (squareToPick != null)
        {
            return(squareToPick);
        }

        // Check right to left diag column
        squareToPick = RightToLeftDiag(gameBoard, condition);
        if (squareToPick != null)
        {
            return(squareToPick);
        }

        return(squareToPick);
    }