Пример #1
0
        bool isOpenThree(Point p, direction dir, PieceType color)
        {
            int        left, right, mid;
            int        leftC, rightC;
            BoardOfFIR newBd = new BoardOfFIR();
            Point      tP;

            mid = countLine(p, dir, color, out left, out right) + 1;
            tP  = p;
            if ((fixPosition(ref tP, dir, false, left + 1) && (int)board[tP.X, tP.Y] >= 2))
            {
                leftC = countLine(tP, dir, color, false);
                if ((mid + leftC) == 3)
                {
                    newBd.boardCopy(this);
                    newBd.board[p.X, p.Y] = color;
                    if (newBd.isOpenFour(tP, dir, color) && (!newBd.isBanned(tP) || color != PieceType.Black))
                    {
                        return(true);
                    }
                }
            }
            tP = p;
            if ((fixPosition(ref tP, dir, true, right + 1) && (int)board[tP.X, tP.Y] >= 2))
            {
                rightC = countLine(tP, dir, color, true);
                if ((mid + rightC) == 3)
                {
                    newBd.boardCopy(this);
                    newBd.board[p.X, p.Y] = color;
                    if (newBd.isOpenFour(tP, dir, color) && (!newBd.isBanned(tP) || color != PieceType.Black))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }