package dev.kske.chess.ui; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import dev.kske.chess.game.Game; /** * Project: Chess
* File: MenuBar.java
* Created: 16.07.2019
* Author: Kai S. K. Engelbart */ public class MenuBar extends JMenuBar { private static final long serialVersionUID = -7221583703531248228L; private final MainWindow mainWindow; private final BoardPane boardPane; public MenuBar(MainWindow mainWindow) { this.mainWindow = mainWindow; boardPane = mainWindow.getBoardPane(); initGameMenu(); } private void initGameMenu() { JMenu gameMenu = new JMenu("Game"); JMenuItem naturalMenuItem = new JMenuItem("Game against natural opponent"); JMenuItem aiMenuItem = new JMenuItem("Game against artificial opponent"); JMenuItem aiVsAiMenuItem = new JMenuItem("Watch AI vs. AI"); naturalMenuItem.addActionListener((evt) -> startGame(Game.createNatural(boardPane))); aiMenuItem.addActionListener((evt) -> { AIConfigDialog dialog = new AIConfigDialog(); dialog.setVisible(true); if (dialog.isStartGame()) startGame(Game.createNaturalVsAI(boardPane, dialog.getMaxDepth(), dialog.getAlphaBetaThreshold())); }); aiVsAiMenuItem.addActionListener((evt) -> startGame(Game.createAIVsAI(boardPane, 4, 3, -10, -10))); gameMenu.add(naturalMenuItem); gameMenu.add(aiMenuItem); gameMenu.add(aiVsAiMenuItem); add(gameMenu); // Start a game naturalMenuItem.doClick(); } private void startGame(Game game) { mainWindow.setGame(game); // Update board and board component game.reset(); game.start(); } }