Здравствуйте, просьба помочь с рестартом программы .

Никита Андрюшов

Здравствуйте , хочу сделать рестарт для своей программы .
Имеется в виду , чтобы когда игрок проигрывал в игре по нажатию куда либо игра начиналась заново.
Пробовал сделать через while , но что то у меня не получается , осваиваю java всего неделю.
код программы
package ru.geekbrains.guess_the_number34;

import javax.imageio.ImageIO;
import javax.swing.;
import java.awt.
;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;

public class GameWindow extends JFrame{
private static long last_frame_time;
private static GameWindow game_window;
private static Image background;
private static Image drop;
private static Image game_over;
private static float drop_left = 200;
private static float drop_top = -100;
private static float drop_v = 200;
private static int score;
private static int koltango;
private static int mmr;
public static void main(String[] args) throws IOException {
background = ImageIO.read(GameWindow.class.getResourceAsStream("background.jpg"));
drop = ImageIO.read(GameWindow.class.getResourceAsStream("drop.png"));
game_over = ImageIO.read(GameWindow.class.getResourceAsStream("game_over.png"));
game_window = new GameWindow();
game_window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
game_window.setLocation(200,100);
game_window.setSize(1080,720);
game_window.setResizable(true);
last_frame_time = System.nanoTime();
GameField game_field = new GameField();
game_field.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int x = e.getX();
int y = e.getY();
float drop_right = drop_left + drop.getWidth(null);
float drop_bottom = drop_top + drop.getHeight(null);
boolean is_500_1000 = score >= 500 && score <= 999;
boolean is_1000_2000 = score >= 1000 && score <= 1999;
boolean is_2000_3000 = score >= 2000 && score <= 2999;
boolean is_3000_4000 = score >= 3000 && score <= 3999;
boolean is_4000_5000 = score >= 4000 && score <= 4999;
boolean is_5000_6000 = score >= 5000 && score <= 5999;
boolean is_6000_7000 = score >= 6000 && score <= 6999;
boolean is_7000_8000 = score >= 7000 && score <= 7999;
boolean is_8000_9000 = score >= 8000 && score <= 8999;
boolean is_drop = x >= drop_left && x <= drop_right && y >= drop_top && y <= drop_bottom;
if (is_drop) {
drop_top = -100;
drop_left = (int) (Math.random() * (game_field.getWidth() - drop.getWidth(null)));
drop_v = drop_v + 3;
score = score + 25;
mmr = (int) (Math.random()*6+22) + mmr;
koltango = koltango + 1;
game_window.setTitle("Марианская впадина | ММР -" + mmr + " | Собрал птс - " + koltango + " штук");
}
if (is_500_1000) {
game_window.setTitle("Всё ещё дно | ММР -" + mmr + "| Собрал птс - " + koltango + " штук");
}
if (is_1000_2000) {
game_window.setTitle("Краб пытается выйти на сушу | ММР -" + mmr + "| Собрал птс - " + koltango + " штук");
}
if (is_2000_3000) {
game_window.setTitle("Маленький Денди | ММР -" + mmr + " | Собрал птс - " + koltango + " штук");
}
if (is_3000_4000) {
game_window.setTitle("Средний игрок в дота 3 | ММР -" + mmr + " | Собрал птс - " + koltango + " штук");
}
if (is_4000_5000) {
game_window.setTitle("Поздравляю ты достиг успехов(нет) | ММР -" + mmr + " | Собрал птс - " + koltango + " штук");
}
if (is_5000_6000) {
game_window.setTitle("Ну ты задрот | ММР -" + mmr + " | Собрал птс - " + koltango + " штук");
}
if (is_6000_7000) {
game_window.setTitle("''PROFFESSIONAL'' | ММР -" + mmr + " | Собрал птс - " + koltango + " штук");
}
if (is_7000_8000) {
game_window.setTitle("Киберспортсмен | ММР -" + mmr + " | Собрал птс - " + koltango + " штук");
}
if (is_8000_9000) {
game_window.setTitle(".-.МИРАКЛ.-. | ММР -" + mmr + " | Собрал птс - " + koltango + " штук");
}

        }
    });
    game_window.add(game_field);
    game_window.setVisible(true);
    game_window.setExtendedState(MAXIMIZED_BOTH);

}
private static void onRepaint(Graphics g){
        long current_time = System.nanoTime();
        float delta_time = (current_time - last_frame_time) * 0.000000001f;
        last_frame_time = current_time;
        drop_top = drop_top + drop_v * delta_time;
        g.drawImage(background, 0, 0, null);
        g.drawImage(drop, (int) drop_left, (int) drop_top, null);
        if (drop_top > game_window.getHeight()) g.drawImage(game_over, 500, 300, null);
}

private static class GameField extends JPanel{

    @Override
    protected void paintComponent(Graphics g){
        super.paintComponent(g);
        onRepaint(g);
        repaint();
    }
}

}

1 чел.