Added coinToss.java, first attempts integrating cardlayout in startLocalGame.java and startMultiplayerGame.java

This commit is contained in:
Joshua 2024-11-16 15:26:52 +01:00
parent a11885c76d
commit f7326a57d9
4 changed files with 279 additions and 152 deletions

124
.idea/uiDesigner.xml Normal file
View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

103
src/coinToss.java Normal file
View File

@ -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);
}
}*/

View File

@ -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);
*/
}
}

View File

@ -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);
*/
}