Cześć. Robię program, który ma za zadanie odbijać piłeczkę od krawędzi. Przy każdym uderzeniu piłka się zwiększa lub zmniejsza w zależności od danej krawędzi oraz zmienia kolor. Problemem jest to, że przy uderzeniu w dolną krawędź i prawą piłka "wychodzi" poza ekran.
Random random = new Random();
Color k = new Color((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255));
int x = 100;
int y = 100;
int srednica = 100;
int dx = 2;
int dy = 1;
public Dimension getPreferredSize() {
return new Dimension(1000, 500);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(k);
g.fillOval(x, y, srednica, srednica);
}
public static void main(String[] args) {
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
com.company.Main pilka = new com.company.Main();
window.add(pilka);
window.setVisible(true);
window.pack();
pilka.animacja();
}
private void animacja() {
while (true) {
x += dx;
y += dy;
if (y + 100 / 2 > getHeight() || y < 0) {
dy = -dy;
k = new Color((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255));
srednica += 100;
}
if (x + 100 / 2 > getWidth() || x < 0) {
dx = -dx;
k = new Color((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255));
srednica -= 100;
}
repaint();
try {
Thread.sleep(3);
} catch (Exception ex) {
}
}