I am looking for a good way to model a 'move' in a board game. I want to be able to ask a Player what their move is and have them respond, then be able to perform the correct actions on the board based on their move. The problem is, there are several types of moves, each with its own set of data. For example, in Scrabble, you can play a word, which should return the word, its position and direction (or a set of tiles with positions or whatever), but you can also swap tiles (which would involve returning the tiles you want to swap) or pass.
Similarly in chess, you normally move a piece, which should return a move with the piece and where it goes, but you could also castle, which involves indicating two pieces and their positions, or a side (king/queen), or some other piece of information besides piece/position.
I'm assuming that a Player returning a Move object is the best way to go, but I'm open to any other modeling choices or suggestions as well.
Thanks!