diff --git a/.classpath b/.classpath index d0a08f5..83f2c4a 100644 --- a/.classpath +++ b/.classpath @@ -7,7 +7,7 @@ - + diff --git a/src/dev/kske/chess/game/Game.java b/src/dev/kske/chess/game/Game.java index 18d3228..095f17b 100644 --- a/src/dev/kske/chess/game/Game.java +++ b/src/dev/kske/chess/game/Game.java @@ -108,6 +108,17 @@ public class Game { public void disconnect() { players.values().forEach(Player::disconnect); } + + public void swapColors() { + players.values().forEach(Player::cancelMove); + Player white = players.get(Color.WHITE); + Player black = players.get(Color.BLACK); + white.setColor(Color.BLACK); + black.setColor(Color.WHITE); + players.put(Color.WHITE, black); + players.put(Color.BLACK, white); + players.get(board.getActiveColor()).requestMove(); + } public Board getBoard() { return board; } } diff --git a/src/dev/kske/chess/ui/MainWindow.java b/src/dev/kske/chess/ui/MainWindow.java index b776425..351ef45 100644 --- a/src/dev/kske/chess/ui/MainWindow.java +++ b/src/dev/kske/chess/ui/MainWindow.java @@ -67,7 +67,13 @@ public class MainWindow { JButton btnRestart = new JButton("Restart"); btnRestart.addActionListener((evt) -> { if (game != null) game.reset(); game.start(); }); + + JButton btnSwapColors = new JButton("Swap Colors"); + btnSwapColors.addActionListener((evt) -> game.swapColors()); + toolPanel.add(btnRestart); + toolPanel.add(btnSwapColors); + mframe.pack(); mframe.setLocationRelativeTo(null); } diff --git a/src/dev/kske/chess/ui/MenuBar.java b/src/dev/kske/chess/ui/MenuBar.java index a502474..fe2b806 100644 --- a/src/dev/kske/chess/ui/MenuBar.java +++ b/src/dev/kske/chess/ui/MenuBar.java @@ -34,7 +34,7 @@ public class MenuBar extends JMenuBar { JMenuItem aiMenuItem = new JMenuItem("Game against artificial opponent"); JMenuItem aiVsAiMenuItem = new JMenuItem("Watch AI vs. AI"); JMenuItem uciMenuItem = new JMenuItem("UCI"); - + naturalMenuItem.addActionListener((evt) -> startGame(Game.createNatural(boardPane))); aiMenuItem.addActionListener((evt) -> { @@ -53,11 +53,12 @@ public class MenuBar extends JMenuBar { JOptionPane.QUESTION_MESSAGE); if (enginePath != null) startGame(Game.createUCI(boardPane, enginePath)); }); - + gameMenu.add(naturalMenuItem); gameMenu.add(aiMenuItem); gameMenu.add(aiVsAiMenuItem); gameMenu.add(uciMenuItem); + add(gameMenu);