|
|
@ -25,22 +25,30 @@ public class GameExplorer { |
|
|
|
private JPanel border4; |
|
|
|
private JPanel border5; |
|
|
|
private JPanel border6; |
|
|
|
private JPanel border7; |
|
|
|
private JButton loginBtn; |
|
|
|
private JButton fleetstormBtn; |
|
|
|
private JButton fourwinsBtn; |
|
|
|
private JButton tictactoeBtn; |
|
|
|
private JButton leaderboardBtn; |
|
|
|
private JButton logoutBtn; |
|
|
|
private JButton exitBtn; |
|
|
|
private JButton backBtn; |
|
|
|
private JLabel username; |
|
|
|
private JLabel loginWarning; |
|
|
|
private JLabel playerName; |
|
|
|
private JLabel playerPoints; |
|
|
|
private JLabel actualPlayerName; |
|
|
|
private JLabel actualPlayerPoints; |
|
|
|
private JLabel chosenGame; |
|
|
|
private JTextField usernameInput; |
|
|
|
private Dimension minSize; |
|
|
|
private Dimension loginBtnSize; |
|
|
|
private Dimension btnSize; |
|
|
|
private Dimension smallBtnSize; |
|
|
|
private GridBagConstraints gbc; |
|
|
|
|
|
|
|
private static final String playerFile = "src/main/java/resources/player_data.csv"; |
|
|
|
private static final String PLAYER_FILE = "src/main/java/resources/player_data.csv"; |
|
|
|
|
|
|
|
private enum Game { FLEETSTORM, FOURWINS, TICTACTOE, LEADERBOARD }; |
|
|
|
private Game actualGame; |
|
|
@ -52,12 +60,12 @@ public class GameExplorer { |
|
|
|
|
|
|
|
frame = new JFrame("1000 infomagische Spiele"); |
|
|
|
|
|
|
|
minSize = new Dimension(400, 300); |
|
|
|
minSize = new Dimension(480, 360); |
|
|
|
loginBtnSize = new Dimension(91, 20); |
|
|
|
btnSize = new Dimension(160, 40); |
|
|
|
smallBtnSize = new Dimension(75, 30); |
|
|
|
gbc = new GridBagConstraints(); |
|
|
|
|
|
|
|
buildExplorerPanel(); |
|
|
|
buildLoginPanel(); |
|
|
|
buildNavigationPanel(); |
|
|
|
buildGamePanels(); |
|
|
@ -75,6 +83,11 @@ public class GameExplorer { |
|
|
|
explorerPanel = new JPanel(); |
|
|
|
explorerPanel.setLayout(new GridBagLayout()); |
|
|
|
|
|
|
|
playerName = new JLabel("Spieler:"); |
|
|
|
playerPoints = new JLabel("Punkte:"); |
|
|
|
actualPlayerName = new JLabel(actualPlayer.getName()); |
|
|
|
actualPlayerPoints = new JLabel("" + actualPlayer.getPoints()); |
|
|
|
|
|
|
|
fleetstormBtn = new JButton("Schiffe versenken"); |
|
|
|
fleetstormBtn.setPreferredSize(btnSize); |
|
|
|
fleetstormBtn.addActionListener(new GameAction()); |
|
|
@ -87,6 +100,12 @@ public class GameExplorer { |
|
|
|
leaderboardBtn = new JButton("Leaderboard"); |
|
|
|
leaderboardBtn.setPreferredSize(btnSize); |
|
|
|
leaderboardBtn.addActionListener(new GameAction()); |
|
|
|
logoutBtn = new JButton("Logout"); |
|
|
|
logoutBtn.setPreferredSize(smallBtnSize); |
|
|
|
logoutBtn.addActionListener(new LogoutAction()); |
|
|
|
exitBtn = new JButton("Exit"); |
|
|
|
exitBtn.setPreferredSize(smallBtnSize); |
|
|
|
exitBtn.addActionListener(new ExitAction()); |
|
|
|
|
|
|
|
border1 = new JPanel(); |
|
|
|
border1.setOpaque(false); |
|
|
@ -98,51 +117,119 @@ public class GameExplorer { |
|
|
|
border4.setOpaque(false); |
|
|
|
border5 = new JPanel(); |
|
|
|
border5.setOpaque(false); |
|
|
|
border7 = new JPanel(); |
|
|
|
border7.setOpaque(false); |
|
|
|
|
|
|
|
gbc.weightx = 0.0; |
|
|
|
gbc.anchor = GridBagConstraints.CENTER; |
|
|
|
gbc.insets = new Insets(0, 0, 0, 0); |
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 0; |
|
|
|
gbc.weighty = 0.2; |
|
|
|
gbc.gridwidth = 3; |
|
|
|
gbc.weighty = 1.0 / 6; |
|
|
|
explorerPanel.add(border1, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 1; |
|
|
|
gbc.gridwidth = 3; |
|
|
|
gbc.weighty = 0.0; |
|
|
|
explorerPanel.add(fleetstormBtn, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 2; |
|
|
|
gbc.weighty = 0.2; |
|
|
|
gbc.gridwidth = 3; |
|
|
|
gbc.weighty = 1.0 / 6; |
|
|
|
explorerPanel.add(border2, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 3; |
|
|
|
gbc.gridwidth = 3; |
|
|
|
gbc.weighty = 0.0; |
|
|
|
explorerPanel.add(fourwinsBtn, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 4; |
|
|
|
gbc.weighty = 0.2; |
|
|
|
gbc.gridwidth = 3; |
|
|
|
gbc.weighty = 1.0 / 6; |
|
|
|
explorerPanel.add(border3, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 5; |
|
|
|
gbc.gridwidth = 3; |
|
|
|
gbc.weighty = 0.0; |
|
|
|
explorerPanel.add(tictactoeBtn, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 6; |
|
|
|
gbc.weighty = 0.2; |
|
|
|
gbc.gridwidth = 3; |
|
|
|
gbc.weighty = 1.0 / 6; |
|
|
|
explorerPanel.add(border4, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 7; |
|
|
|
gbc.gridwidth = 3; |
|
|
|
gbc.weighty = 0.0; |
|
|
|
explorerPanel.add(leaderboardBtn, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 8; |
|
|
|
gbc.weighty = 0.2; |
|
|
|
gbc.gridwidth = 3; |
|
|
|
gbc.weighty = 1.0 / 6; |
|
|
|
explorerPanel.add(border5, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 9; |
|
|
|
gbc.gridwidth = 1; |
|
|
|
gbc.weighty = 0.0; |
|
|
|
gbc.anchor = GridBagConstraints.LINE_END; |
|
|
|
gbc.insets = new Insets(0, 0, 0, 5); |
|
|
|
explorerPanel.add(logoutBtn, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 2; |
|
|
|
gbc.gridy = 9; |
|
|
|
gbc.gridwidth = 1; |
|
|
|
gbc.weighty = 0.0; |
|
|
|
gbc.anchor = GridBagConstraints.LINE_START; |
|
|
|
gbc.insets = new Insets(0, 5, 0, 0); |
|
|
|
explorerPanel.add(exitBtn, gbc); |
|
|
|
|
|
|
|
gbc.anchor = GridBagConstraints.CENTER; |
|
|
|
gbc.insets = new Insets(0, 0, 0, 0); |
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 10; |
|
|
|
gbc.gridwidth = 3; |
|
|
|
gbc.weighty = 1.0 / 6; |
|
|
|
explorerPanel.add(border7, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 11; |
|
|
|
gbc.gridwidth = 1; |
|
|
|
gbc.weighty = 0.0; |
|
|
|
gbc.anchor = GridBagConstraints.LINE_END; |
|
|
|
explorerPanel.add(playerName, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 2; |
|
|
|
gbc.gridy = 11; |
|
|
|
gbc.gridwidth = 1; |
|
|
|
gbc.weighty = 0.0; |
|
|
|
gbc.insets = new Insets(0, 5, 0, 0); |
|
|
|
gbc.anchor = GridBagConstraints.LINE_START; |
|
|
|
explorerPanel.add(actualPlayerName, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 12; |
|
|
|
gbc.gridwidth = 1; |
|
|
|
gbc.weighty = 0.0; |
|
|
|
gbc.anchor = GridBagConstraints.LINE_END; |
|
|
|
explorerPanel.add(playerPoints, gbc); |
|
|
|
|
|
|
|
gbc.gridx = 2; |
|
|
|
gbc.gridy = 12; |
|
|
|
gbc.gridwidth = 1; |
|
|
|
gbc.weighty = 0.0; |
|
|
|
gbc.insets = new Insets(0, 5, 0, 0); |
|
|
|
gbc.anchor = GridBagConstraints.LINE_START; |
|
|
|
explorerPanel.add(actualPlayerPoints, gbc); |
|
|
|
} |
|
|
|
|
|
|
|
private void buildLoginPanel() { |
|
|
@ -156,7 +243,10 @@ public class GameExplorer { |
|
|
|
loginWarning = new JLabel(); |
|
|
|
usernameInput = new JTextField(8); |
|
|
|
|
|
|
|
gbc.weighty = 0; |
|
|
|
gbc.gridwidth = 1; |
|
|
|
gbc.weightx = 0.0; |
|
|
|
gbc.weighty = 0.0; |
|
|
|
gbc.anchor = GridBagConstraints.CENTER; |
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 0; |
|
|
|
gbc.insets = new Insets(0, 0, 5, 0); |
|
|
@ -190,7 +280,9 @@ public class GameExplorer { |
|
|
|
border6 = new JPanel(); |
|
|
|
border6.setOpaque(false); |
|
|
|
|
|
|
|
gbc.gridwidth = 1; |
|
|
|
gbc.weighty = 0.0; |
|
|
|
gbc.anchor = GridBagConstraints.CENTER; |
|
|
|
gbc.gridx = 0; |
|
|
|
gbc.gridy = 0; |
|
|
|
gbc.weightx = 0.0; |
|
|
@ -238,15 +330,16 @@ public class GameExplorer { |
|
|
|
if (!userInput.equals("")) { |
|
|
|
loginWarning.setText(""); |
|
|
|
|
|
|
|
manager.loadPlayers(playerFile); |
|
|
|
manager.loadPlayers(PLAYER_FILE); |
|
|
|
actualPlayer = manager.selectPlayer(userInput); |
|
|
|
|
|
|
|
buildExplorerPanel(); |
|
|
|
|
|
|
|
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); |
|
|
|
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!"); |
|
|
|
} |
|
|
@ -283,6 +376,30 @@ public class GameExplorer { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private class LogoutAction implements ActionListener { |
|
|
|
@Override |
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
manager.savePlayers(PLAYER_FILE); |
|
|
|
|
|
|
|
buildLoginPanel(); |
|
|
|
|
|
|
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
|
|
|
frame.remove(explorerPanel); |
|
|
|
frame.add(loginPanel); |
|
|
|
frame.revalidate(); |
|
|
|
frame.repaint(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private class ExitAction implements ActionListener { |
|
|
|
@Override |
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
|
manager.savePlayers(PLAYER_FILE); |
|
|
|
|
|
|
|
System.exit(0); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private class BackAction implements ActionListener { |
|
|
|
@Override |
|
|
|
public void actionPerformed(ActionEvent e) { |
|
|
@ -300,6 +417,8 @@ public class GameExplorer { |
|
|
|
gamePanel.remove(leaderboardPanel); |
|
|
|
} |
|
|
|
|
|
|
|
actualPlayerPoints.setText("" + actualPlayer.getPoints()); |
|
|
|
|
|
|
|
frame.remove(gamePanel); |
|
|
|
frame.add(explorerPanel); |
|
|
|
frame.revalidate(); |
|
|
|