64 lines
2.1 KiB
Java
64 lines
2.1 KiB
Java
import java.awt.*;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import javax.swing.*;
|
|
|
|
/**
|
|
* Klasse für Erstellung von winScreen Objekten
|
|
* Dient zur Anzeige des Sieges nachdem ein Spiel
|
|
* @author Lucas Bronson
|
|
*/
|
|
public class WinScreen extends JPanel {
|
|
JLabel winLabel = new JLabel("Du hast Gewonnen!");
|
|
Font robotoFont = new Font("Roboto", Font.BOLD, 45);
|
|
JButton okButton = new JButton("Zurück zum Hauptmenü");
|
|
|
|
/**
|
|
* Konstruktor der WinScreen Klasse
|
|
* @param frame Der Mainframe der Anwendung über den alle Panels angezeigt werden.
|
|
* @author Lucas Bronson
|
|
*/
|
|
public WinScreen(MainFrame frame) {
|
|
setLayout(null);
|
|
buildPanel(frame);
|
|
}
|
|
|
|
/**
|
|
* Panel bauen/Objekte hinzufuegen
|
|
* @param frame Der Mainframe der Anwendung über den alle Panels angezeigt werden.
|
|
* @author Lucas Bronson
|
|
*/
|
|
public void buildPanel(MainFrame frame) {
|
|
Timer timer = new Timer(5, new ActionListener() {
|
|
private float hue = 0; // Farbton-Wert für HSB-Farbmodell
|
|
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
// Farbe basierend auf dem Farbton-Wert berechnen
|
|
Color pulsierendeFarbe = Color.getHSBColor(hue, 0.8f, 0.8f); // Sättigung und Helligkeit fix
|
|
winLabel.setForeground(pulsierendeFarbe);
|
|
|
|
// Farbton leicht verändern (Zyklus zwischen 0 und 1)
|
|
hue += 0.01f;
|
|
if (hue > 1) {
|
|
hue = 0;
|
|
}
|
|
}
|
|
});
|
|
okButton.setBounds(650,525,200,50);
|
|
winLabel.setBounds(500,450,500,50);
|
|
timer.start(); // Timer starten
|
|
winLabel.setFont(robotoFont);
|
|
winLabel.setHorizontalAlignment(SwingConstants.CENTER);
|
|
//okButton.setHorizontalAlignment(SwingConstants.CENTER);
|
|
okButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
frame.showPanel("MainMenu");
|
|
}
|
|
});
|
|
add(winLabel);
|
|
add(okButton);
|
|
}
|
|
}
|