65 lines
1.7 KiB
Java
65 lines
1.7 KiB
Java
package dev.kske.chess.ui;
|
|
|
|
import javax.swing.JMenu;
|
|
import javax.swing.JMenuBar;
|
|
import javax.swing.JMenuItem;
|
|
|
|
import dev.kske.chess.game.Game;
|
|
|
|
/**
|
|
* Project: <strong>Chess</strong><br>
|
|
* File: <strong>MenuBar.java</strong><br>
|
|
* Created: <strong>16.07.2019</strong><br>
|
|
* Author: <strong>Kai S. K. Engelbart</strong>
|
|
*/
|
|
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();
|
|
}
|
|
}
|