condensed movePiece() logic