コード例 #1
0
ファイル: MovesQueen.cs プロジェクト: FFormula/ChessTables
        ulong AllRookSlides()
        {
            ulong     rook  = figureCoord.coord.GetBit();
            ColorType color = figureCoord.figure.GetColor();
            ulong     stops = board.GetOwnedBits();

            return
                ((Slide6(rook, stops) |
                  Slide4(rook, stops) |
                  Slide8(rook, stops) |
                  Slide2(rook, stops)) & ~board.GetColorBits(color));
        }
コード例 #2
0
        public IEnumerable <FigureMove> NextPawnMove(FigureCoord figureCoord)
        {
            if (figureCoord.figure.GetColor() == ColorType.white)
            {
                InitWhite();
            }
            else
            {
                InitBlack();
            }
            bit = figureCoord.coord.GetBit();
            figureCoord.coord.extract(out x, out y);
            owned            = board.GetOwnedBits();
            this.figureCoord = figureCoord;

            foreach (FigureMove move in NextPawnMove_Double()) // e2-e4
            {
                yield return(move);
            }
            foreach (FigureMove move in NextPawnMove_Forward()) // e2-e3
            {
                foreach (FigureMove promove in NextPawnMove_Promotion(move))
                {
                    yield return(promove);
                }
            }
            foreach (FigureMove move in NextPawnMove_Fight()) // ed
            {
                foreach (FigureMove promove in NextPawnMove_Promotion(move))
                {
                    yield return(promove);
                }
            }
        }