Cards for Monster, Spell and Trap interfaces
As a general principle, instead of asking an object what its type is, tell it what you want to do, and let overridden methods handle the differences between types:

return card.getCardNode(nodeWidth, nodeHeight, imageWidth, imageHeight);


and add a getCardNode abstract method to Card, so that each Card subclass can implement its own piece of the get logic.