diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/coinToss.java b/src/coinToss.java new file mode 100644 index 0000000..b044e3e --- /dev/null +++ b/src/coinToss.java @@ -0,0 +1,103 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class coinToss { + // Frame + private JFrame frame = new JFrame("Zugreihenfolge"); + private JPanel mainPanel = new JPanel(new CardLayout()); // Panel mit CardLayout für Szenenwechsel + private JLabel frameTitle = new JLabel("Zugreihenfolge", SwingConstants.CENTER); + private JLabel messageLabel = new JLabel("", SwingConstants.CENTER); // Label für die Nachricht + private int reihenfolge = 1; // Beispielhaft: 1 = Spieler 1 fängt an, 0 = Spieler 2 fängt an + private Timer timer; + + coinToss() { + // Erstelle Frame + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(1500, 1000); + frame.setLocationRelativeTo(null); + + // Panel für die Startszene erstellen + JPanel startPanel = new JPanel(); + startPanel.setLayout(new BorderLayout()); + + // Nachricht basierend auf 'reihenfolge' einstellen + String startMessage = (reihenfolge == 1) + ? "Du fängst an, mach dich bereit..." + : "Dein Gegner fängt an, mach dich bereit..."; + messageLabel.setText(startMessage); + messageLabel.setFont(new Font("Arial", Font.BOLD, 24)); + startPanel.add(frameTitle, BorderLayout.NORTH); + startPanel.add(messageLabel, BorderLayout.CENTER); + + // Panel zur Haupt-Panel hinzufügen + mainPanel.add(startPanel, "start"); + + // Beispielhaftes "Spielfeld" (nächste Szene) + JPanel gamePanel = new JPanel(); + gamePanel.setLayout(new BorderLayout()); + JLabel gameLabel = new JLabel("Das Spiel beginnt!", SwingConstants.CENTER); + gameLabel.setFont(new Font("Arial", Font.BOLD, 36)); + gamePanel.add(gameLabel, BorderLayout.CENTER); + + // GamePanel zu Haupt-Panel hinzufügen + mainPanel.add(gamePanel, "game"); + + // Frame-Layout einstellen + frame.add(mainPanel); + frame.setVisible(true); + + // Timer starten + startTimer(); + } + + private void startTimer() { + // Timer, der nach 3 Sekunden zum Spiel-Panel wechselt + timer = new Timer(3000, new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + // Wechsel zum Spiel-Panel + CardLayout cardLayout = (CardLayout) mainPanel.getLayout(); + cardLayout.show(mainPanel, "game"); + timer.stop(); // Timer stoppen + } + }); + timer.setRepeats(false); // Timer soll nur einmal ablaufen + timer.start(); // Timer starten + } +} + + + + + +/* +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + + + TODO: + + + +public class coinToss { + // Funktionshilfen + + + // Frame + JFrame frame = new JFrame("Zugreihenfolge"); + + // Labels + JLabel frameTitle = new JLabel("Zugreihenfolge"); + + coinToss() { + // Erstelle Frame + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(1500, 1000); + + // Layout Manager (absolute ositionierung) + frame.setLayout(null); + } +}*/ \ No newline at end of file diff --git a/src/startLocalGame.java b/src/startLocalGame.java index c3464d8..9142325 100644 --- a/src/startLocalGame.java +++ b/src/startLocalGame.java @@ -1,15 +1,8 @@ import javax.swing.*; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -/* - TODO: - Back Button führt ins vorherige Fenster - Start geht ins nächste Fenster - Gebrauchte Attribute werden übergeben (Semester Spielername etc.) - Klasse mit Controller aufteilen - */ - public class startLocalGame { // Funktionshilfen int semesterCounter = 1; // Semester Counter Label @@ -23,6 +16,11 @@ public class startLocalGame { // Frame JFrame frame = new JFrame("Lokales Spiel"); + JPanel mainPanel = new JPanel(new CardLayout()); + + // Panels + JPanel localGamePanel = new JPanel(); // Panel für das lokale Spiel + startMultiplayerGame multiplayerGame = new startMultiplayerGame(); // Instanziere Multiplayer-Klasse // Labels JLabel frameTitle = new JLabel("Lokales Spiel"); @@ -51,10 +49,15 @@ public class startLocalGame { // Erstelle Frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(1500, 1000); + frame.setLayout(new BorderLayout()); // Haupt-Layout + frame.add(mainPanel, BorderLayout.CENTER); - // Layout Manager (absolute ositionierung) + // Layout Manager (absolute positionierung) frame.setLayout(null); + // Lokales Spiel Panel erstellen + localGamePanel.setLayout(null); + // Erstelle Label frameTitle.setBounds(20, 20, 200, 30); frame.add(frameTitle); @@ -110,17 +113,24 @@ public class startLocalGame { rightPlayerTextField.setBounds(1200, 650, 250, 50); frame.add(rightPlayerTextField); - // ActionListener für die Buttons - //ZUSATZ leftPlayerTextField.setText(leftPlayerNickname); rightPlayerTextField.setText(rightPlayerNickname); - // STARTBUTTON + // Panels zum CardLayout hinzufügen + mainPanel.add(localGamePanel, "localGame"); + + // Multiplayer-Panel erstellen und hinzufügen + JPanel multiplayerGamePanel = multiplayerGame.createMultiplayerPanel((CardLayout) mainPanel.getLayout(), mainPanel); + mainPanel.add(multiplayerGamePanel, "multiplayerGame"); + + // ActionListener für den Start-Button startButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - startMultiplayerGame huso = new startMultiplayerGame(); + // Wechsel zum Multiplayer-Panel + CardLayout cardLayout = (CardLayout) mainPanel.getLayout(); + cardLayout.show(mainPanel, "multiplayerGame"); } }); @@ -146,7 +156,6 @@ public class startLocalGame { }); // PLAYERTOGGLEBUTTONS - leftPlayerLeftButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -183,8 +192,6 @@ public class startLocalGame { } // TOGGLE METHODEN - // TODO Müssen evtl vergrößert werden je nach schwierigkeitsgraden - // dazu evt. übergabeparameter für links rechts gedrückt private void toggleLeftPlayerIcon() { if (leftPlayerIcon.getIcon() == humanPlayerIcon) { leftPlayerIcon.setIcon(aiPlayerIcon); @@ -217,57 +224,4 @@ public class startLocalGame { rightPlayerTextField.setText("Leicht"); } } - - /* POTENTIELL VERALTET - leftPlayerLeftButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - ImageIcon MuteIcon = new ImageIcon("Grafik/sound button muted.png"); - if(leftPlayerIcon.getIcon()==humanPlayerIcon) { - leftPlayerIcon.setIcon(aiPlayerIcon); - }else{ - leftPlayerIcon.setIcon(humanPlayerIcon); - } - } - }); - - leftPlayerRightButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - ImageIcon MuteIcon = new ImageIcon("Grafik/sound button muted.png"); - if(leftPlayerIcon.getIcon()==humanPlayerIcon) { - leftPlayerIcon.setIcon(aiPlayerIcon); - }else{ - leftPlayerIcon.setIcon(humanPlayerIcon); - } - } - }); - - rightPlayerLeftButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - ImageIcon MuteIcon = new ImageIcon("Grafik/sound button muted.png"); - if(rightPlayerIcon.getIcon()==humanPlayerIcon) { - rightPlayerIcon.setIcon(aiPlayerIcon); - }else{ - rightPlayerIcon.setIcon(humanPlayerIcon); - } - } - }); - - rightPlayerRightButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - ImageIcon MuteIcon = new ImageIcon("Grafik/sound button muted.png"); - if(rightPlayerIcon.getIcon()==humanPlayerIcon) { - rightPlayerIcon.setIcon(aiPlayerIcon); - }else{ - rightPlayerIcon.setIcon(humanPlayerIcon); - } - } - }); - - frame.setVisible(true); - */ - } - +} diff --git a/src/startMultiplayerGame.java b/src/startMultiplayerGame.java index f184d68..2ead3f1 100644 --- a/src/startMultiplayerGame.java +++ b/src/startMultiplayerGame.java @@ -1,4 +1,5 @@ import javax.swing.*; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -20,9 +21,6 @@ public class startMultiplayerGame { ImageIcon humanPlayerIcon = new ImageIcon("graphics/humanPlayer.png"); ImageIcon aiPlayerIcon = new ImageIcon("graphics/aiPlayer.png"); - // Frame - JFrame frame = new JFrame("Multiplayer Spiel"); - // Labels JLabel frameTitle = new JLabel("Multiplayer Spiel"); JLabel semesterlable = new JLabel("Semester"); @@ -42,56 +40,54 @@ public class startMultiplayerGame { // Textfelder JTextField PlayerTextField = new JTextField(20); - startMultiplayerGame() { - // Erstelle Frame - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setSize(1500, 1000); - - // Layout Manager (absolute ositionierung) - frame.setLayout(null); + // Method to create the Multiplayer Panel + public JPanel createMultiplayerPanel(CardLayout cardLayout, JPanel mainPanel) { + // Create a new JPanel for the multiplayer game + JPanel multiplayerPanel = new JPanel(); + multiplayerPanel.setLayout(null); // Erstelle Label frameTitle.setBounds(20, 20, 200, 30); - frame.add(frameTitle); + multiplayerPanel.add(frameTitle); semesterlable.setBounds(700, 300, 200, 30); - frame.add(semesterlable); + multiplayerPanel.add(semesterlable); PlayerName.setBounds(50, 625, 200, 30); - frame.add(PlayerName); + multiplayerPanel.add(PlayerName); PlayerIcon.setBounds(75, 400, 200, 128); - frame.add(PlayerIcon); + multiplayerPanel.add(PlayerIcon); semesterCounterLabel.setBounds(725, 475, 50, 50); // zwischen den Up/Down-Buttons semesterCounterLabel.setHorizontalAlignment(SwingConstants.CENTER); - frame.add(semesterCounterLabel); + multiplayerPanel.add(semesterCounterLabel); // Erstellt Buttons backButton.setBounds(1380, 20, 80, 80); - frame.add(backButton); + multiplayerPanel.add(backButton); PlayerLeftButton.setBounds(50, 450, 50, 50); - frame.add(PlayerLeftButton); + multiplayerPanel.add(PlayerLeftButton); PlayerRightButton.setBounds(250, 450, 50, 50); - frame.add(PlayerRightButton); + multiplayerPanel.add(PlayerRightButton); semesterUpButton.setBounds(725, 400, 50, 50); - frame.add(semesterUpButton); + multiplayerPanel.add(semesterUpButton); semesterDownButton.setBounds(725, 550, 50, 50); - frame.add(semesterDownButton); + multiplayerPanel.add(semesterDownButton); joinGameButton.setBounds(1100, 350, 200, 50); - frame.add(joinGameButton); + multiplayerPanel.add(joinGameButton); createGameButton.setBounds(1100, 550, 200, 50); - frame.add(createGameButton); + multiplayerPanel.add(createGameButton); // Erstellt Textfelder PlayerTextField.setBounds(50, 650, 250, 50); - frame.add(PlayerTextField); + multiplayerPanel.add(PlayerTextField); //ZUSATZ PlayerTextField.setText(PlayerNickname); @@ -119,7 +115,6 @@ public class startMultiplayerGame { }); // PLAYERTOGGLEBUTTONS - PlayerLeftButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -136,12 +131,18 @@ public class startMultiplayerGame { } }); - frame.setVisible(true); + // ActionListener für den "Back" Button, um zum vorherigen Panel zurückzukehren + backButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + cardLayout.show(mainPanel, "localGamePanel"); + } + }); + + return multiplayerPanel; } // TOGGLE METHODEN - // TODO Müssen evtl vergrößert werden je nach schwierigkeitsgraden - // dazu evt. übergabeparameter für links rechts gedrückt private void toggleLeftPlayerIcon() { if (PlayerIcon.getIcon() == humanPlayerIcon) { PlayerIcon.setIcon(aiPlayerIcon); @@ -151,65 +152,10 @@ public class startMultiplayerGame { } private void updateTextFields() { - // Linker Spieler if (PlayerIcon.getIcon() == humanPlayerIcon) { PlayerTextField.setText(PlayerNickname); } else { PlayerTextField.setText("Leicht"); } } - - /* POTENTIELL VERALTET - leftPlayerLeftButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - ImageIcon MuteIcon = new ImageIcon("Grafik/sound button muted.png"); - if(leftPlayerIcon.getIcon()==humanPlayerIcon) { - leftPlayerIcon.setIcon(aiPlayerIcon); - }else{ - leftPlayerIcon.setIcon(humanPlayerIcon); - } - } - }); - - leftPlayerRightButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - ImageIcon MuteIcon = new ImageIcon("Grafik/sound button muted.png"); - if(leftPlayerIcon.getIcon()==humanPlayerIcon) { - leftPlayerIcon.setIcon(aiPlayerIcon); - }else{ - leftPlayerIcon.setIcon(humanPlayerIcon); - } - } - }); - - rightPlayerLeftButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - ImageIcon MuteIcon = new ImageIcon("Grafik/sound button muted.png"); - if(rightPlayerIcon.getIcon()==humanPlayerIcon) { - rightPlayerIcon.setIcon(aiPlayerIcon); - }else{ - rightPlayerIcon.setIcon(humanPlayerIcon); - } - } - }); - - rightPlayerRightButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - ImageIcon MuteIcon = new ImageIcon("Grafik/sound button muted.png"); - if(rightPlayerIcon.getIcon()==humanPlayerIcon) { - rightPlayerIcon.setIcon(aiPlayerIcon); - }else{ - rightPlayerIcon.setIcon(humanPlayerIcon); - } - } - }); - - frame.setVisible(true); - */ } - -