I am going to develop a Tic-Tac-Toe game using Java(or maybe other OO Languages). Now I have a picture in my mind about the general design.
Interface: Player, then I will be able to implement a couple of Player classes based on how I want the opponent to be, for example, random player, intelligent player, etc.
Classes: Board class, with a two-dimensional array of integers, 0 indicates open, 1 indicates me, -1 indicates opponent. The evaluation function will be in here as well, to return the next best move based on the current board arrangement and whose turn it is.
Referee class, which will create instance of the Board and two player instances, then get the game started.
This is a rough idea of my OO design. Could anybody give me any critiques please? I find this is really beneficial. Thank you very much.