コード例 #1
0
ファイル: Rook.cs プロジェクト: consolelogreece/Chess
        public override List <BoardTile> XRay(Piece target)
        {
            var pos = this.CurrentPosition;

            List <BoardTile> tiles = new List <BoardTile>();

            if (pos.row == target.CurrentPosition.row)
            {
                if (pos.col < target.CurrentPosition.col)
                {
                    tiles = XRayHelpers.XRayHorizontalLR(this, target);
                }
                else
                {
                    tiles = XRayHelpers.XRayHorizontalRL(this, target);
                }
            }
            else if (pos.col == target.CurrentPosition.col)
            {
                if (pos.row < target.CurrentPosition.row)
                {
                    tiles = XRayHelpers.XRayVerticalUD(this, target);
                }
                else
                {
                    tiles = XRayHelpers.XRayVerticalDU(this, target);
                }
            }

            return(tiles);
        }
コード例 #2
0
        public override List <BoardTile> XRay(Piece target)
        {
            var pos = this.CurrentPosition;

            var tiles = new List <BoardTile>();

            if (pos.row < target.CurrentPosition.row)
            {
                if (pos.col < target.CurrentPosition.col)
                {
                    tiles = XRayHelpers.XRayDiagonalBLTR(this, target);
                }
                else
                {
                    tiles = XRayHelpers.XRayDiagonalTRBL(this, target);
                }
            }
            else
            {
                if (pos.col < target.CurrentPosition.col)
                {
                    tiles = XRayHelpers.XRayDiagonalTLBR(this, target);
                }
                else
                {
                    tiles = XRayHelpers.XRayDiagonalBRTL(this, target);
                }
            }

            return(tiles);
        }
コード例 #3
0
        public override List <BoardTile> XRay(Piece target)
        {
            var pos = this.CurrentPosition;

            List <BoardTile> tiles = new List <BoardTile>();

            // note: order of the checks here are important. if it were reversed, horizontal/vertical pins would trip diagonal pin checks.
            if (pos.row == target.CurrentPosition.row)
            {
                if (pos.col < target.CurrentPosition.col)
                {
                    tiles = XRayHelpers.XRayHorizontalLR(this, target);
                }
                else
                {
                    tiles = XRayHelpers.XRayHorizontalRL(this, target);
                }
            }
            else if (pos.col == target.CurrentPosition.col)
            {
                if (pos.row < target.CurrentPosition.row)
                {
                    tiles = XRayHelpers.XRayVerticalUD(this, target);
                }
                else
                {
                    tiles = XRayHelpers.XRayVerticalDU(this, target);
                }
            }
            else if (pos.row < target.CurrentPosition.row)
            {
                if (pos.col < target.CurrentPosition.col)
                {
                    tiles = XRayHelpers.XRayDiagonalBLTR(this, target);
                }
                else
                {
                    tiles = XRayHelpers.XRayDiagonalTRBL(this, target);
                }
            }
            else
            {
                if (pos.col < target.CurrentPosition.col)
                {
                    tiles = XRayHelpers.XRayDiagonalTLBR(this, target);
                }
                else
                {
                    tiles = XRayHelpers.XRayDiagonalBRTL(this, target);
                }
            }

            return(tiles);
        }