- Integrated the ANN with the game. The network now predicts a user move, completely ignores it, and trains itself on the players actual move. This integration also included implementing two new functions. The first translates a board state to a boolean array to correspond with input nodes. The second translates a move to a boolean array to correspond with output nodes.
Fixed instantiation where a new MouseListener was used to each tile - now only one is used for all Tiles.
Fixed issue where the MouseListener was being added to each tile twice.
Renamed Player implementations and changed Player to interface, with the goal of using abstraction to make the human and computer interactions with the game identical for ease of simulation.
This isn't ideal, but is preferable to putting this information in each of rows x columns different mouse listeners.
Also added a title to the MainFrame.
While not as clean as using ChangeListener, it completely decouples the Model and View aspects,
and also avoids the need to manually paint() a hierarchy of components (a task best handled by Swing/AWT).