Ejemplo n.º 1
0
        public IList <CoordinatationPair> CalulateValidMoveForCurrentPiece(int x, int y, AbstractPiece piece)
        {
            var direction = (piece.Color == Colors.White) ? true : false;
            IList <CoordinatationPair> validMoves = new List <CoordinatationPair>();

            for (int i = 0; i < 8; i++)
            {
                for (int k = 0; k < 8; k++)
                {
                    int dx = (direction) ? x - i : i - x;
                    int dy = (direction) ? y - k : k - y;
                    if (piece.IsLegalMove(dx, dy))
                    {
                        validMoves.Add(new CoordinatationPair
                        {
                            X = k,
                            Y = i
                        });
                    }
                    if (piece is Pawn)
                    {
                        if (Fields[i, k].IsOccupied())
                        {
                            if (((Pawn)piece).IsLegalAttackMove(dx, dy, true))
                            {
                                validMoves.Add(new CoordinatationPair
                                {
                                    X = k,
                                    Y = i
                                });
                            }
                        }
                    }
                }
            }
            return(validMoves);
        }