A chess game project for oop course 2023.
- Cancel handler classes, define action listeners within their corresponding components.
- Add check board legitimacy feature for Go game
- Reduce reversi boardScan complexity to O(n)
- Fix multi-threading problems when pressing "new game" button during AI counter-play.
- Add stop game button.
- Add first & second level AI for go, gomoku, and reversi.
- Add account feature.
- Add replay feature when loading game. Can be turned on/off with Config.REPLAY_WHEN_LOAD.
- Update Maven dependency on json due to security concerns.
- Fix asynchronous threading problems when automatically taking random steps.
- Remove unnecessary game save file.
- Fix Reversi rules: when only one side runs out of available step, the game continues.
- Add Reversi Rules.
- Add boardLegit domain to BoardScanResult.
- Add Direction enum type. Add nextPosition() method to Position class.
- Add init() method to Ruleset interface.
- Game will call Ruleset.init() in its constructor.
- Unify naming: Board.getChessType -> getStoneColor.
- Will judge if BoardHistory before poping for withdraw.
- Add both side withdraw & surrender feature.
- Fix bugs about gomoku boardScan function.
- Add string() method to ChessType, more convenient for display.
- Add load/save game feature. (without checking legitimacy)
- Remove Step class as it is never used.
- Add pop-up window components.
- Add random game simulation feature.
- Delete stepHistory attribute.
- Add withdraw feature.
- Add step count rendering logic. User can configure whether to show step count or not.
- Fix issues regarding liberty judgement in the Go game. Go game can now function properly.
- Add new global config argument: DEFAULT_BOARD_SIZE
- Apply orange color to BoardPanel.
- Minor adjustment on BoardPanel size so that it looks more harmonious.
- Add step logic for Gomoku game.
- Server refactor: change the input parameter of gameEnd from identity to stoneColor.
- Server refactor: make code cleaner for Server.surrender(), Server.stepAt() and Server.abstain().
- Fix bug: error handling null pieces when comparing boards.
- Fix bug: server does not set board.nextChessType when game starts.
- Add step logic for Go game. (untested)
- Populate Position class.
- Change history data structure from ArrayList to Stack.
- Add boardScan method to ruleset.
- Remove metadata for pieces, as I noticed it doesn't improve calculation complexity.
- Add metadata for pieces. Currently, we introduce two types of metadata:
- LIBERTY (for go game)
- CONNECTION_COUNT (for gomoku game)
- Optimize imports
- Fix minor text issues.
- Rename move -> step.
- Remove deprecated files.
- Server: add withdraw interface.
- Client: add graphic user interface.