Add restart functionality and again some smaller ui improvements
This commit is contained in:
parent
6c4978cf72
commit
9d866c7034
@ -4,6 +4,8 @@ import de.icaotix.ultimatetictactoe.model.definitions.GameState;
|
||||
import de.icaotix.ultimatetictactoe.model.definitions.Player;
|
||||
|
||||
public interface IUltimateTicTacToe {
|
||||
void initialize();
|
||||
|
||||
ITicTacToeGame getSubGame(int id);
|
||||
|
||||
int getActiveField();
|
||||
|
@ -9,13 +9,18 @@ import java.util.HashSet;
|
||||
|
||||
public class UltimateTicTacToe implements IUltimateTicTacToe {
|
||||
|
||||
private final ITicTacToeGame[] subGames;
|
||||
private final GameState[] masterGameStates;
|
||||
private ITicTacToeGame[] subGames;
|
||||
private GameState[] masterGameStates;
|
||||
private Player currentPlayer;
|
||||
private int activeField;
|
||||
private GameState globalGameState;
|
||||
|
||||
public UltimateTicTacToe() {
|
||||
this.initialize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
this.subGames = new ITicTacToeGame[9];
|
||||
for (int i = 0; i < this.subGames.length; i++) {
|
||||
this.subGames[i] = new TicTacToeGame();
|
||||
|
@ -10,14 +10,21 @@ import java.awt.*;
|
||||
public class UltimateTicTacToeView extends JFrame {
|
||||
|
||||
private final UltimateTicTacToePanelViewModel viewModel;
|
||||
private final Label currentPlayerLabel;
|
||||
private JLabel currentPlayerLabel;
|
||||
|
||||
public UltimateTicTacToeView(UltimateTicTacToePanelViewModel viewModel) {
|
||||
super("Ultimate TicTacToe");
|
||||
this.viewModel = viewModel;
|
||||
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
|
||||
//Create and set up the window.
|
||||
this.setContentToGamePane();
|
||||
|
||||
this.setSize(new Dimension(500, 520));
|
||||
this.setVisible(true);
|
||||
}
|
||||
|
||||
public void setContentToGamePane() {
|
||||
this.getContentPane().removeAll();
|
||||
this.getContentPane().setLayout(new BorderLayout());
|
||||
|
||||
JPanel mainGamePane = new JPanel();
|
||||
@ -29,26 +36,33 @@ public class UltimateTicTacToeView extends JFrame {
|
||||
mainGamePane.add(new TicTacToeView(subViewModel).getView());
|
||||
}
|
||||
|
||||
this.currentPlayerLabel = new Label();
|
||||
this.currentPlayerLabel = new JLabel();
|
||||
this.currentPlayerLabel.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 15));
|
||||
this.currentPlayerLabel.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
this.getContentPane().add(this.currentPlayerLabel, BorderLayout.NORTH);
|
||||
|
||||
this.viewModel.setGameResultCallback(this::setGameResult);
|
||||
this.viewModel.setCurrentPlayerCallback(this::setCurrentPlayer);
|
||||
|
||||
//Display the window.
|
||||
this.setSize(new Dimension(500, 520));
|
||||
this.setVisible(true);
|
||||
}
|
||||
|
||||
public void setGameResult(String resultText) {
|
||||
this.getContentPane().removeAll();
|
||||
|
||||
this.getContentPane().setLayout(new BorderLayout());
|
||||
JButton winnerLabel = new JButton(resultText);
|
||||
Font font = new Font(Font.SANS_SERIF, Font.BOLD, 15);
|
||||
JLabel winnerLabel = new JLabel(resultText);
|
||||
Font font = new Font(Font.SANS_SERIF, Font.BOLD, 20);
|
||||
winnerLabel.setFont(font);
|
||||
winnerLabel.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
|
||||
this.getContentPane().add(winnerLabel);
|
||||
JButton restartBtn = new JButton("RESTART");
|
||||
restartBtn.addActionListener(e -> {
|
||||
this.viewModel.startNewGame();
|
||||
this.setContentToGamePane();
|
||||
this.viewModel.prepareNextMove();
|
||||
});
|
||||
|
||||
this.getContentPane().add(winnerLabel, BorderLayout.CENTER);
|
||||
this.getContentPane().add(restartBtn, BorderLayout.SOUTH);
|
||||
this.getContentPane().validate();
|
||||
this.getContentPane().repaint();
|
||||
}
|
||||
|
@ -68,4 +68,8 @@ public class UltimateTicTacToePanelViewModel {
|
||||
public void setCurrentPlayerCallback(Consumer<String> currentPlayerCallback) {
|
||||
this.currentPlayerCallback = currentPlayerCallback;
|
||||
}
|
||||
|
||||
public void startNewGame() {
|
||||
this.ultimateTicTacToe.initialize();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user