235 lines
9.0 KiB
Java
235 lines
9.0 KiB
Java
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
|
|
/**
|
|
* Das startMultiplayerGame Panel dient dem Erstellen eines Online Spiels.
|
|
* Hier kann der Benutzer Spieler inklusive Namen und das Semester, in dem sich der Benutzer befindet, einstellen.
|
|
* @author Joshua Kuklok
|
|
*/
|
|
public class startMultiplayerGame extends JPanel {
|
|
|
|
// Funktionshilfen
|
|
int semesterCounter = 1;
|
|
String PlayerNickname = "Spieler 1";
|
|
|
|
// Grafiken
|
|
ImageIcon backButtonIcon = new ImageIcon("graphics/backButton.png");
|
|
ImageIcon humanPlayerIcon = new ImageIcon("graphics/humanPlayer.png");
|
|
ImageIcon aiPlayerEasyIcon = new ImageIcon("graphics/botPlayerEasy.png");
|
|
ImageIcon aiPlayerNormalIcon = new ImageIcon("graphics/botPlayerNormal.png");
|
|
ImageIcon aiPlayerHardIcon = new ImageIcon("graphics/botPlayerHard.png");
|
|
|
|
// Labels
|
|
JLabel frameTitle = new JLabel("Multiplayer Spiel");
|
|
JLabel semesterLabel = new JLabel("Semester");
|
|
JLabel PlayerName = new JLabel("Name");
|
|
JLabel PlayerIcon = new JLabel(humanPlayerIcon);
|
|
JLabel semesterCounterLabel = new JLabel(String.valueOf(semesterCounter));
|
|
|
|
// Buttons
|
|
JButton backButton = new JButton(backButtonIcon);
|
|
JButton PlayerLeftButton = new JButton("<-");
|
|
JButton PlayerRightButton = new JButton("->");
|
|
JButton semesterUpButton = new JButton("^");
|
|
JButton semesterDownButton = new JButton("v");
|
|
JButton createGameButton = new JButton("Spiel erstellen");
|
|
JButton joinGameButton = new JButton("Spiel beitreten");
|
|
|
|
// Textfelder
|
|
JTextField PlayerTextField = new JTextField(20);
|
|
|
|
Font robotoFont = new Font("Roboto", Font.BOLD, 45);
|
|
|
|
/**
|
|
* Konstruktor der startLocalGame.
|
|
* Fügt Buttons, Textfelder und Label hinzu.
|
|
* Fügt ebenfalls ActionListeners hinzu, damit Buttons etc. ihre gewünschte Funktion haben
|
|
* @param frame Der Mainframe der Anwendung über den alle Panels angezeigt werden.
|
|
* @author Joshua Kuklok, Lucas Bronson
|
|
*/
|
|
startMultiplayerGame(MainFrame frame) {
|
|
|
|
// Layout des Panels
|
|
setLayout(null);
|
|
|
|
// Setze Komponentenpositionen
|
|
frameTitle.setBounds(20, 20, 500, 60);
|
|
frameTitle.setFont(robotoFont.deriveFont(50f));
|
|
add(frameTitle);
|
|
|
|
semesterLabel.setBounds(700, 300, 200, 30);
|
|
add(semesterLabel);
|
|
|
|
PlayerName.setBounds(50, 625, 200, 30);
|
|
add(PlayerName);
|
|
|
|
PlayerIcon.setBounds(75, 400, 200, 128);
|
|
add(PlayerIcon);
|
|
|
|
semesterCounterLabel.setBounds(705, 475, 50, 50); // zwischen den Up/Down-Buttons
|
|
semesterCounterLabel.setHorizontalAlignment(SwingConstants.CENTER);
|
|
add(semesterCounterLabel);
|
|
|
|
backButton.setBounds(1380, 20, 80, 80);
|
|
add(backButton);
|
|
|
|
PlayerLeftButton.setBounds(50, 450, 50, 50);
|
|
add(PlayerLeftButton);
|
|
|
|
PlayerRightButton.setBounds(250, 450, 50, 50);
|
|
add(PlayerRightButton);
|
|
|
|
semesterUpButton.setBounds(705, 400, 50, 50);
|
|
add(semesterUpButton);
|
|
|
|
semesterDownButton.setBounds(705, 550, 50, 50);
|
|
add(semesterDownButton);
|
|
|
|
joinGameButton.setBounds(1100, 350, 200, 50);
|
|
add(joinGameButton);
|
|
|
|
createGameButton.setBounds(1100, 550, 200, 50);
|
|
add(createGameButton);
|
|
|
|
PlayerTextField.setBounds(50, 650, 250, 50);
|
|
PlayerTextField.setText(PlayerNickname);
|
|
add(PlayerTextField);
|
|
|
|
// ActionListener für Buttons
|
|
// Um das Semester zu erhöhen.
|
|
semesterUpButton.addActionListener(e -> {
|
|
if (semesterCounter < 6) {
|
|
semesterCounter++;
|
|
semesterCounterLabel.setText(String.valueOf(semesterCounter));
|
|
}
|
|
});
|
|
|
|
// Um das Semester zu senken.
|
|
semesterDownButton.addActionListener(e -> {
|
|
if (semesterCounter > 1) {
|
|
semesterCounter--;
|
|
semesterCounterLabel.setText(String.valueOf(semesterCounter));
|
|
}
|
|
});
|
|
|
|
// Um Player nach links zu "rotieren".
|
|
PlayerLeftButton.addActionListener(e -> {
|
|
togglePlayerIconLeft();
|
|
updateTextFields();
|
|
});
|
|
|
|
// Um Player nach rechts zu "rotieren".
|
|
PlayerRightButton.addActionListener(e -> {
|
|
togglePlayerIconRight();
|
|
updateTextFields();
|
|
});
|
|
|
|
// Um Namen des linken Spielers zu speichern.
|
|
PlayerTextField.addActionListener(e -> {
|
|
PlayerNickname = PlayerTextField.getText();
|
|
System.out.println("Linker Spielername geändert zu: " + PlayerNickname); // Debugging-Ausgabe
|
|
});
|
|
|
|
// Um Namen des linken Spielers zu speichern, auch wenn nicht Enter gedrückt wird.
|
|
PlayerTextField.addFocusListener(new java.awt.event.FocusAdapter() {
|
|
@Override
|
|
public void focusLost(java.awt.event.FocusEvent evt) {
|
|
PlayerNickname = PlayerTextField.getText();
|
|
System.out.println("Linker Spielername geändert zu: " + PlayerNickname); // Debugging-Ausgabe
|
|
}
|
|
});
|
|
|
|
// Um zum MainMenu zu wechseln.
|
|
backButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
frame.showPanel("MainMenu");
|
|
}
|
|
});
|
|
|
|
// Um zu JoinGame mit richtigen Parametern zu wechseln.
|
|
joinGameButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
if (PlayerIcon.getIcon() == humanPlayerIcon) {
|
|
frame.showPanelSMG("JoinGame",1,0, PlayerNickname, semesterCounter);
|
|
} else if ( PlayerIcon.getIcon() == aiPlayerEasyIcon) {
|
|
frame.showPanelSMG("JoinGame",1,1, PlayerNickname, semesterCounter);
|
|
} else if ( PlayerIcon.getIcon() == aiPlayerNormalIcon) {
|
|
frame.showPanelSMG("JoinGame",1,2, PlayerNickname, semesterCounter);
|
|
} else if ( PlayerIcon.getIcon() == aiPlayerHardIcon) {
|
|
frame.showPanelSMG("JoinGame",1,3, PlayerNickname, semesterCounter);
|
|
}
|
|
}
|
|
});
|
|
|
|
// Um zu JoinGame mit richtigen Parametern zu wechseln.
|
|
createGameButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
//Parameter -> panelName, Spiel erstellen oder beitreten (int), Spielertyp(int 0-3), Spielername
|
|
if (PlayerIcon.getIcon() == humanPlayerIcon) {
|
|
frame.showPanelSMG("JoinGame",0,0, PlayerNickname, semesterCounter);
|
|
} else if ( PlayerIcon.getIcon() == aiPlayerEasyIcon) {
|
|
frame.showPanelSMG("JoinGame",0,1, PlayerNickname, semesterCounter);
|
|
} else if ( PlayerIcon.getIcon() == aiPlayerNormalIcon) {
|
|
frame.showPanelSMG("JoinGame",0,2, PlayerNickname, semesterCounter);
|
|
} else if ( PlayerIcon.getIcon() == aiPlayerHardIcon) {
|
|
frame.showPanelSMG("JoinGame",0,3, PlayerNickname, semesterCounter);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
// Hilfsfunktionen
|
|
|
|
/**
|
|
* Setzt das jeweils "nächste" Icon, wenn der PlayerLeftButton gedrückt wird.
|
|
* @author Joshua Kuklok
|
|
*/
|
|
private void togglePlayerIconLeft() {
|
|
if (PlayerIcon.getIcon() == humanPlayerIcon) {
|
|
PlayerIcon.setIcon(aiPlayerHardIcon);
|
|
} else if (PlayerIcon.getIcon() == aiPlayerEasyIcon){
|
|
PlayerIcon.setIcon(humanPlayerIcon);
|
|
} else if (PlayerIcon.getIcon() == aiPlayerNormalIcon) {
|
|
PlayerIcon.setIcon(aiPlayerEasyIcon);
|
|
} else if (PlayerIcon.getIcon() == aiPlayerHardIcon) {
|
|
PlayerIcon.setIcon(aiPlayerNormalIcon);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Setzt das jeweils "nächste" Icon, wenn der PlayerRightButton gedrückt wird.
|
|
* @author Joshua Kuklok
|
|
*/
|
|
private void togglePlayerIconRight() {
|
|
if (PlayerIcon.getIcon() == humanPlayerIcon) {
|
|
PlayerIcon.setIcon(aiPlayerEasyIcon);
|
|
} else if (PlayerIcon.getIcon() == aiPlayerEasyIcon){
|
|
PlayerIcon.setIcon(aiPlayerNormalIcon);
|
|
} else if (PlayerIcon.getIcon() == aiPlayerNormalIcon) {
|
|
PlayerIcon.setIcon(aiPlayerHardIcon);
|
|
} else if (PlayerIcon.getIcon() == aiPlayerHardIcon) {
|
|
PlayerIcon.setIcon(humanPlayerIcon);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Aktualisiert die Textfelder basierend auf den Icons
|
|
* @author Joshua Kuklok
|
|
*/
|
|
private void updateTextFields() {
|
|
if (PlayerIcon.getIcon() == humanPlayerIcon) {
|
|
PlayerTextField.setText(PlayerNickname);
|
|
} else if (PlayerIcon.getIcon() == aiPlayerEasyIcon){
|
|
PlayerTextField.setText("Einfach");
|
|
} else if (PlayerIcon.getIcon() == aiPlayerNormalIcon) {
|
|
PlayerTextField.setText("Mittel");
|
|
} else if (PlayerIcon.getIcon() == aiPlayerHardIcon) {
|
|
PlayerTextField.setText("Schwer");
|
|
}
|
|
}
|
|
} |