Sorry, I don't have a hard & fast answer. I've never coded it myself, but I've given it a bit of thought over the years.
Things to consider:
- When creating a Tic-Tac-Toe system, my personal preference is to have a 2D game at 3x3, a 3D game at 4x4x4 and a 4D game at 5x5x5x5. This gets fun, because there is no center square in 3D, and 4D just gets wacky.
- Think about "What is a win?" in terms of vectors, so that what you create is scalable.
- You want to write your rules so that they can be rotated. If you're playing in 2D, the board can be rotated in one of 4 positions. Write the rule once, if you're checking against board state, and then rotate those states. In 3D, you'll have 6x4 rotations and in 4D you'll have 8x6x4, I think...