Пример кода игры с мячом на Java с методами

Вот пример игры с мячом, реализованной на Java с несколькими методами:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class BallGame extends JPanel implements KeyListener {
    private int ballX = 250;
    private int ballY = 250;
    private int ballSpeedX = 3;
    private int ballSpeedY = 3;
    public BallGame() {
        JFrame frame = new JFrame("Ball Game");
        frame.setSize(600, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.addKeyListener(this);
        frame.add(this);
        frame.setVisible(true);
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.RED);
        g.fillOval(ballX, ballY, 50, 50);
    }
    public void update() {
        ballX += ballSpeedX;
        ballY += ballSpeedY;
        if (ballX < 0 || ballX > 550) {
            ballSpeedX = -ballSpeedX;
        }
        if (ballY < 0 || ballY > 550) {
            ballSpeedY = -ballSpeedY;
        }
    }
    public void keyTyped(KeyEvent e) {}
    public void keyPressed(KeyEvent e) {
        int key = e.getKeyCode();
        if (key == KeyEvent.VK_LEFT) {
            ballSpeedX = -3;
        } else if (key == KeyEvent.VK_RIGHT) {
            ballSpeedX = 3;
        } else if (key == KeyEvent.VK_UP) {
            ballSpeedY = -3;
        } else if (key == KeyEvent.VK_DOWN) {
            ballSpeedY = 3;
        }
    }
    public void keyReleased(KeyEvent e) {
        ballSpeedX = 0;
        ballSpeedY = 0;
    }
    public static void main(String[] args) {
        BallGame game = new BallGame();
        while (true) {
            game.update();
            game.repaint();
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

В этом примере класс BallGameрасширяет JPanelи реализует интерфейс KeyListener. Он создает окно с помощью JFrameи прослушивает события клавиатуры. Метод paintComponentпереопределяется для рисования красного шарика на панели. Метод updateизменяет положение мяча в зависимости от его скорости и обрабатывает столкновение с краями окна. Методы keyPressedи keyReleasedобрабатывают ввод с клавиатуры для управления движением мяча. Метод mainсоздает экземпляр BallGame, постоянно обновляет и перерисовывает игру, а также приостанавливает короткий период времени между каждым кадром.