Ejemplo n.º 1
0
        public List <PieceMove> GetMoves(Grid pos)
        {
            Piece piece = chessBoard.Board[pos.row, pos.column];

            if (piece == null || piece.color != turn)
            {
                return(new List <PieceMove>());
            }
            List <PieceMove> moves = new List <PieceMove>();

            if (check != null && piece.color == check.checkColor && piece.GetType() != typeof(King))
            {
                foreach (PieceMove move in piece.GetPieceMoves(pos))
                {
                    if (!check.checkPositions.Contains(move.newPos) && move.newPos != check.piecePos)
                    {
                        continue;
                    }
                    else if (TestMove(move))
                    {
                        moves.Add(move);
                    }
                }
                return(moves);
            }
            return(piece.GetPieceMoves(pos));
        }