Commit Graph

13 Commits

Author SHA1 Message Date
Marshall
a756aa242d - PlayerModel.java now returns the full array of output nodes instead of just their activation states. This exposes their strengths. 2012-04-29 12:49:08 -04:00
Woody Folsom
c53ff75ea4 Added configurable computer player - use 'com=random', 'com=minimax' etc as cmd-line args.
Default is AlphaBeta.
Updated ActionListener for UserChooserFrame so that selecting from the list (or typing a new name and pressing RETURN) also triggers the action.
Added the player and computer algorithm names to the title bar e.g. "Bob vs. Alpha-Beta".
2012-04-29 10:18:15 -04:00
Marshall
15ed56134e - Implemented multiple users, including a selection dialog and automatic preference saving and loading.
- 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.
2012-04-29 03:22:19 -04:00
Marshall
dc11e2c48b - Implemented saving and loading of a player model. High scores are now persistent, though only for one user.
- Created a JUnit test class to test the serialization. Should be useful for later tests.
2012-04-28 23:01:36 -04:00
Marshall
a6af6df132 - Reorganized packages so that the computer agents are inside the model package.
- Added support for the player model inside Referee.java; high scores should now persist over a single execution of the program.
- Refactored PlayerModel.java to support game logging. All games are now logged so that we can track overall progress.
- Added scaffolding to allow saving and importing of PlayerModel.java. It is not yet functional, but it will be with two function implementations and then the appropriate calls.
2012-04-28 19:18:28 -04:00
Marshall
1a4c6d865b - Finished HighScoreDialog.java. Now the player can play the game repeatedly. 2012-04-28 16:24:45 -04:00
Marshall
0cfe26faf1 - Created a GameGoal class to encapsulate the expected computer behavior/target score for a game. The PlayerModel.java function getTargetScore() now returns a GameGoal object. 2012-04-26 12:08:17 -04:00
Woody Folsom
b87f58cb31 Minor changes to support debugging Alpha-Beta move generator. 2012-04-25 09:27:52 -04:00
Woody Folsom
d9ec72d0fb Alpha-Beta move generator can look 2 plays (4 plies) ahead on a 4x4 board and blocks every possible attempt by the player to connect 3.
It should be possible to play on larger boards when the computers 'move' is changed from playing a tile to picking the player's next available color.
2012-04-14 15:36:02 -04:00
Woody Folsom
74b8eb4622 Revampled MainFrame layout to improve appearance/usability when the number of tiles is very large or small.
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.
2012-04-14 12:02:17 -04:00
Woody Folsom
9619f9a96d Incremental updates. Work in progress to augment Board, Referee, add score for computer player, implement Monte-Carlo simulation.
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.
2012-04-08 17:25:10 -04:00
Woody Folsom
b8df412740 Removed use of Refreshable and replaced with several methods which update the GUI using SwingUtilities.invokeLater().
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).
2012-04-04 17:15:21 -04:00
Marshall
521fac6e08 -The rest of the game engine. I screwed up the commit last time. 2012-03-31 14:18:08 -04:00