81 lines
2.4 KiB
Java
81 lines
2.4 KiB
Java
package dev.kske.chess.ui;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
import javax.swing.JMenu;
|
|
import javax.swing.JMenuBar;
|
|
import javax.swing.JMenuItem;
|
|
|
|
import dev.kske.chess.board.Board;
|
|
import dev.kske.chess.board.Piece.Color;
|
|
import dev.kske.chess.game.Game;
|
|
import dev.kske.chess.game.NaturalPlayer;
|
|
import dev.kske.chess.game.Player;
|
|
import dev.kske.chess.game.ai.AIPlayer;
|
|
|
|
/**
|
|
* 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 OverlayComponent overlayComponent;
|
|
private final BoardComponent boardComponent;
|
|
private final Board board;
|
|
private final Map<Color, Player> players;
|
|
|
|
public MenuBar(MainWindow mainWindow) {
|
|
this.mainWindow = mainWindow;
|
|
overlayComponent = mainWindow.getBoardPane().getOverlayComponent();
|
|
boardComponent = mainWindow.getBoardPane().getBoardComponent();
|
|
board = boardComponent.getBoard();
|
|
players = new HashMap<>();
|
|
|
|
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) -> {
|
|
players.put(Color.WHITE, new NaturalPlayer(board, Color.WHITE, overlayComponent));
|
|
players.put(Color.BLACK, new NaturalPlayer(board, Color.BLACK, overlayComponent));
|
|
startGame();
|
|
});
|
|
|
|
aiMenuItem.addActionListener((evt) -> {
|
|
players.put(Color.WHITE, new NaturalPlayer(board, Color.WHITE, overlayComponent));
|
|
players.put(Color.BLACK, new AIPlayer(board, Color.BLACK, 5));
|
|
startGame();
|
|
});
|
|
|
|
aiVsAiMenuItem.addActionListener((evt) -> {
|
|
players.put(Color.WHITE, new AIPlayer(board, Color.WHITE, 5));
|
|
players.put(Color.BLACK, new AIPlayer(board, Color.BLACK, 4));
|
|
startGame();
|
|
});
|
|
|
|
gameMenu.add(naturalMenuItem);
|
|
gameMenu.add(aiMenuItem);
|
|
gameMenu.add(aiVsAiMenuItem);
|
|
|
|
add(gameMenu);
|
|
}
|
|
|
|
private void startGame() {
|
|
Game game = new Game(players, boardComponent);
|
|
mainWindow.setGame(game);
|
|
game.start();
|
|
}
|
|
}
|