Bouncing shape - over-complicating it?
Hi,
Following is the code I came up with, I get the feeling I over-complicated the program, please point me in the right direction, TIA.
Code:
import java.awt.*;
import javax.swing.*;
class BouncingDisplay extends JFrame
{
public static void main(String[] arguments)
{
BouncingDisplay bd = new BouncingDisplay();
}
public BouncingDisplay()
{
super("Bouncing Display");
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
BouncingPanel bp = new BouncingPanel();
getContentPane().add(bp);
setVisible(true);
}
}
class BouncingPanel extends JPanel implements Runnable
{
Thread runner;
int x;
int y;
public BouncingPanel()
{
setSize(200, 200);
Thread runner = new Thread(this);
runner.start();
}
public void run()
{
char x_dir = '+';
char y_dir = '+';
while(true)
{
if(x_dir == '+')
{
if(x > getSize().width - 10)
{
x_dir = '-';
x -= 4;
} else {
x += 4;
}
} else {
if(x <= 0)
{
x_dir = '+';
x += 4;
} else {
x -= 4;
}
}
if(y_dir == '+')
{
if(y > getSize().height - 10)
{
y_dir = '-';
y -= 4;
} else {
y += 4;
}
} else {
if(y <= 0)
{
y_dir = '+';
y += 4;
} else {
y -= 4;
}
}
repaint();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
}
}
public void paintComponent(Graphics canvas)
{
Graphics2D canvas2D = (Graphics2D)canvas;
canvas2D.clearRect(0, 0, getSize().width, getSize().height);
canvas2D.setColor(Color.blue);
canvas2D.fillRect(x, y, 10, 10);
}
}
D.