|
@ -0,0 +1,238 @@ |
|
|
|
|
|
package de.tims.gameexplorer; |
|
|
|
|
|
|
|
|
|
|
|
import java.awt.*; |
|
|
|
|
|
import java.awt.event.*; |
|
|
|
|
|
import javax.swing.*; |
|
|
|
|
|
|
|
|
|
|
|
public class GameExplorer { |
|
|
|
|
|
|
|
|
|
|
|
private JFrame frame; |
|
|
|
|
|
private JPanel explorerPanel; |
|
|
|
|
|
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 fleetstormBtn; |
|
|
|
|
|
private JButton fourwinsBtn; |
|
|
|
|
|
private JButton tictactoeBtn; |
|
|
|
|
|
private JButton leaderboardBtn; |
|
|
|
|
|
private JButton backBtn; |
|
|
|
|
|
private JLabel chosenGame; |
|
|
|
|
|
private Dimension minSize; |
|
|
|
|
|
private Dimension btnSize; |
|
|
|
|
|
private GridBagConstraints gbc; |
|
|
|
|
|
|
|
|
|
|
|
private enum Game { FLEETSTORM, FOURWINS, TICTACTOE, LEADERBOARD }; |
|
|
|
|
|
private Game actualGame; |
|
|
|
|
|
|
|
|
|
|
|
public GameExplorer() { |
|
|
|
|
|
frame = new JFrame("1000 infomagische Spiele"); |
|
|
|
|
|
|
|
|
|
|
|
minSize = new Dimension(400, 300); |
|
|
|
|
|
btnSize = new Dimension(160, 40); |
|
|
|
|
|
gbc = new GridBagConstraints(); |
|
|
|
|
|
|
|
|
|
|
|
buildExplorerPanel(); |
|
|
|
|
|
buildNavigationPanel(); |
|
|
|
|
|
buildGamePanels(); |
|
|
|
|
|
|
|
|
|
|
|
frame.add(explorerPanel); |
|
|
|
|
|
|
|
|
|
|
|
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 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 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(); |
|
|
|
|
|
} |
|
|
|
|
|
} |