You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
313 lines
7.9 KiB
313 lines
7.9 KiB
package de.tims.gameexplorer;
|
|
|
|
import java.awt.*;
|
|
import java.awt.event.*;
|
|
|
|
import javax.swing.*;
|
|
|
|
import de.tims.player_management.Player;
|
|
import de.tims.player_management.PlayerManager;
|
|
|
|
public class GameExplorer {
|
|
|
|
private JFrame frame;
|
|
private JPanel explorerPanel;
|
|
private JPanel loginPanel;
|
|
private JPanel gamePanel;
|
|
private JPanel navigationPanel;
|
|
private JPanel fleetstormPanel;
|
|
private JPanel fourwinsPanel;
|
|
private JPanel tictactoePanel;
|
|
private JPanel leaderboardPanel;
|
|
private JPanel border1;
|
|
private JPanel border2;
|
|
private JPanel border3;
|
|
private JPanel border4;
|
|
private JPanel border5;
|
|
private JPanel border6;
|
|
private JButton loginBtn;
|
|
private JButton fleetstormBtn;
|
|
private JButton fourwinsBtn;
|
|
private JButton tictactoeBtn;
|
|
private JButton leaderboardBtn;
|
|
private JButton backBtn;
|
|
private JLabel username;
|
|
private JLabel loginWarning;
|
|
private JLabel chosenGame;
|
|
private JTextField usernameInput;
|
|
private Dimension minSize;
|
|
private Dimension loginBtnSize;
|
|
private Dimension btnSize;
|
|
private GridBagConstraints gbc;
|
|
|
|
private static final String playerFile = "src/main/java/resources/player_data.csv";
|
|
|
|
private enum Game { FLEETSTORM, FOURWINS, TICTACTOE, LEADERBOARD };
|
|
private Game actualGame;
|
|
private PlayerManager manager;
|
|
private Player actualPlayer;
|
|
|
|
public GameExplorer() {
|
|
manager = new PlayerManager();
|
|
|
|
frame = new JFrame("1000 infomagische Spiele");
|
|
|
|
minSize = new Dimension(400, 300);
|
|
loginBtnSize = new Dimension(91, 20);
|
|
btnSize = new Dimension(160, 40);
|
|
gbc = new GridBagConstraints();
|
|
|
|
buildExplorerPanel();
|
|
buildLoginPanel();
|
|
buildNavigationPanel();
|
|
buildGamePanels();
|
|
|
|
frame.add(loginPanel);
|
|
|
|
frame.setMinimumSize(minSize);
|
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
frame.setSize(640, 480);
|
|
frame.setResizable(true);
|
|
frame.setVisible(true);
|
|
}
|
|
|
|
private void buildExplorerPanel() {
|
|
explorerPanel = new JPanel();
|
|
explorerPanel.setLayout(new GridBagLayout());
|
|
|
|
fleetstormBtn = new JButton("Schiffe versenken");
|
|
fleetstormBtn.setPreferredSize(btnSize);
|
|
fleetstormBtn.addActionListener(new GameAction());
|
|
fourwinsBtn = new JButton("Vier gewinnt");
|
|
fourwinsBtn.setPreferredSize(btnSize);
|
|
fourwinsBtn.addActionListener(new GameAction());
|
|
tictactoeBtn = new JButton("TicTacToe");
|
|
tictactoeBtn.setPreferredSize(btnSize);
|
|
tictactoeBtn.addActionListener(new GameAction());
|
|
leaderboardBtn = new JButton("Leaderboard");
|
|
leaderboardBtn.setPreferredSize(btnSize);
|
|
leaderboardBtn.addActionListener(new GameAction());
|
|
|
|
border1 = new JPanel();
|
|
border1.setOpaque(false);
|
|
border2 = new JPanel();
|
|
border2.setOpaque(false);
|
|
border3 = new JPanel();
|
|
border3.setOpaque(false);
|
|
border4 = new JPanel();
|
|
border4.setOpaque(false);
|
|
border5 = new JPanel();
|
|
border5.setOpaque(false);
|
|
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 0;
|
|
gbc.weighty = 0.2;
|
|
explorerPanel.add(border1, gbc);
|
|
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 1;
|
|
gbc.weighty = 0.0;
|
|
explorerPanel.add(fleetstormBtn, gbc);
|
|
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 2;
|
|
gbc.weighty = 0.2;
|
|
explorerPanel.add(border2, gbc);
|
|
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 3;
|
|
gbc.weighty = 0.0;
|
|
explorerPanel.add(fourwinsBtn, gbc);
|
|
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 4;
|
|
gbc.weighty = 0.2;
|
|
explorerPanel.add(border3, gbc);
|
|
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 5;
|
|
gbc.weighty = 0.0;
|
|
explorerPanel.add(tictactoeBtn, gbc);
|
|
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 6;
|
|
gbc.weighty = 0.2;
|
|
explorerPanel.add(border4, gbc);
|
|
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 7;
|
|
gbc.weighty = 0.0;
|
|
explorerPanel.add(leaderboardBtn, gbc);
|
|
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 8;
|
|
gbc.weighty = 0.2;
|
|
explorerPanel.add(border5, gbc);
|
|
}
|
|
|
|
private void buildLoginPanel() {
|
|
loginPanel = new JPanel();
|
|
loginPanel.setLayout(new GridBagLayout());
|
|
|
|
loginBtn = new JButton("Login");
|
|
loginBtn.setPreferredSize(loginBtnSize);
|
|
loginBtn.addActionListener(new LoginAction());
|
|
username = new JLabel("Name eingeben:");
|
|
loginWarning = new JLabel();
|
|
usernameInput = new JTextField(8);
|
|
|
|
gbc.weighty = 0;
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 0;
|
|
gbc.insets = new Insets(0, 0, 5, 0);
|
|
loginPanel.add(username, gbc);
|
|
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 1;
|
|
gbc.insets = new Insets(5, 0, 5, 0);
|
|
loginPanel.add(usernameInput, gbc);
|
|
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 2;
|
|
gbc.insets = new Insets(5, 0, 5, 0);
|
|
loginPanel.add(loginBtn, gbc);
|
|
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 3;
|
|
gbc.insets = new Insets(5, 0, 0, 0);
|
|
loginPanel.add(loginWarning, gbc);
|
|
}
|
|
|
|
private void buildNavigationPanel() {
|
|
navigationPanel = new JPanel();
|
|
navigationPanel.setLayout(new GridBagLayout());
|
|
|
|
backBtn = new JButton("< Zurück");
|
|
backBtn.addActionListener(new BackAction());
|
|
|
|
chosenGame = new JLabel();
|
|
|
|
border6 = new JPanel();
|
|
border6.setOpaque(false);
|
|
|
|
gbc.weighty = 0.0;
|
|
gbc.gridx = 0;
|
|
gbc.gridy = 0;
|
|
gbc.weightx = 0.0;
|
|
gbc.insets = new Insets(5, 20, 5, 0);
|
|
navigationPanel.add(backBtn, gbc);
|
|
|
|
gbc.gridx = 1;
|
|
gbc.gridy = 0;
|
|
gbc.weightx = 1.0;
|
|
gbc.insets = new Insets(0, 0, 0, 0);
|
|
navigationPanel.add(border6, gbc);
|
|
|
|
gbc.gridx = 2;
|
|
gbc.gridy = 0;
|
|
gbc.weightx = 0.0;
|
|
gbc.insets = new Insets(5, 0, 5, 20);
|
|
navigationPanel.add(chosenGame, gbc);
|
|
}
|
|
|
|
private void buildGamePanels() {
|
|
gamePanel = new JPanel();
|
|
gamePanel.setLayout(new BorderLayout());
|
|
|
|
gamePanel.add(navigationPanel, BorderLayout.PAGE_START);
|
|
|
|
//use of dummy panels because real panels have not been implemented yet
|
|
fleetstormPanel = new JPanel();
|
|
fleetstormPanel.setBackground(Color.BLUE);
|
|
|
|
fourwinsPanel = new JPanel();
|
|
fourwinsPanel.setBackground(Color.GREEN);
|
|
|
|
tictactoePanel = new JPanel();
|
|
tictactoePanel.setBackground(Color.YELLOW);
|
|
|
|
leaderboardPanel = new JPanel();
|
|
leaderboardPanel.setBackground(Color.RED);
|
|
}
|
|
|
|
private class LoginAction implements ActionListener {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
String userInput = usernameInput.getText();
|
|
|
|
if (!userInput.equals("")) {
|
|
loginWarning.setText("");
|
|
|
|
manager.loadPlayers(playerFile);
|
|
actualPlayer = manager.selectPlayer(userInput);
|
|
|
|
frame.remove(loginPanel);
|
|
frame.add(explorerPanel);
|
|
frame.revalidate();
|
|
frame.repaint();
|
|
|
|
System.out.println("Actual Player: " + actualPlayer.getName() + ", Points: " + actualPlayer.getPoints());
|
|
} else {
|
|
loginWarning.setText("Kein Name eingegeben!");
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
private class GameAction implements ActionListener {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
//each button adds a different dummy panel to the gamePanel
|
|
if (e.getSource() == fleetstormBtn) {
|
|
actualGame = Game.FLEETSTORM;
|
|
chosenGame.setText("Schiffe versenken");
|
|
gamePanel.add(fleetstormPanel, BorderLayout.CENTER);
|
|
} else if (e.getSource() == fourwinsBtn) {
|
|
actualGame = Game.FOURWINS;
|
|
chosenGame.setText("Vier gewinnt");
|
|
gamePanel.add(fourwinsPanel, BorderLayout.CENTER);
|
|
} else if (e.getSource() == tictactoeBtn) {
|
|
actualGame = Game.TICTACTOE;
|
|
chosenGame.setText("TicTacToe");
|
|
gamePanel.add(tictactoePanel, BorderLayout.CENTER);
|
|
} else if (e.getSource() == leaderboardBtn) {
|
|
actualGame = Game.LEADERBOARD;
|
|
chosenGame.setText("Leaderboard");
|
|
gamePanel.add(leaderboardPanel, BorderLayout.CENTER);
|
|
}
|
|
|
|
frame.remove(explorerPanel);
|
|
frame.add(gamePanel);
|
|
frame.revalidate();
|
|
frame.repaint();
|
|
}
|
|
}
|
|
|
|
private class BackAction implements ActionListener {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
switch (actualGame) {
|
|
case FLEETSTORM:
|
|
gamePanel.remove(fleetstormPanel);
|
|
break;
|
|
case FOURWINS:
|
|
gamePanel.remove(fourwinsPanel);
|
|
break;
|
|
case TICTACTOE:
|
|
gamePanel.remove(tictactoePanel);
|
|
break;
|
|
case LEADERBOARD:
|
|
gamePanel.remove(leaderboardPanel);
|
|
}
|
|
|
|
frame.remove(gamePanel);
|
|
frame.add(explorerPanel);
|
|
frame.revalidate();
|
|
frame.repaint();
|
|
}
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
new GameExplorer();
|
|
}
|
|
}
|