Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Anim extends JPanel implements Runnable {
- Pilka P1;
- boolean going = true;
- Thread animator;
- Pilka P2;
- double deltaX;
- double deltaY;
- double distance;
- public Anim() {
- P1 = new Pilka(50, 80, 40, Color.green);
- P1.setX(50);
- P1.setY(80);
- P1.setxSpeed(4);
- P1.setySpeed(2);
- P2 = new Pilka(50, 80, 70, Color.green);
- P2.setX(150);
- P2.setY(80);
- P2.setxSpeed(4);
- P2.setySpeed(2);
- animator = new Thread(this);
- animator.start();
- }
- @Override
- public void paintComponent(Graphics g) {
- super.paintComponent(g);
- P1.draw(g);
- P2.draw(g);
- g.setColor(Color.green);
- // draw center of circle
- g.fillOval((int) P1.getX() - 5, (int) P1.getY() - 5, 10, 10);
- g.fillOval((int) P2.getX() - 5, (int) P2.getY() - 5, 10, 10);
- }
- @Override
- public void run() {
- while (going) {
- P1.move();
- P2.move();
- checkCollision();
- repaint();
- try {
- Thread.sleep(20);
- } catch (InterruptedException ex) {
- }
- }
- }
- public void checkCollision() {
- deltaX = Math.abs(P1.getX() - P2.getX());
- deltaY = Math.abs(P1.getY() - P2.getY());
- distance = deltaX * deltaX + deltaY * deltaY;
- if (distance < (P1.getDiametar() / 2 + P2.getDiametar() / 2) * (P1.getDiametar() / 2 + P2.getDiametar() / 2)) {
- double newxSpeed1 = (P1.getxSpeed() * (4 - 7) + (2 * 7 * P2.getxSpeed())) / 11;
- double newxSpeed2 = (P2.getxSpeed() * (7 - 4) + (2 * 4 * P1.getxSpeed())) / 11;
- double newySpeed1 = (P1.getySpeed() * (4 - 7) + (2 * 7 * P2.getySpeed())) / 11;
- double newySpeed2 = (P2.getySpeed() * (7 - 4) + (2 * 4 * P1.getySpeed())) / 11;
- P2.setxSpeed(newxSpeed2);
- P2.setySpeed(newySpeed2);
- P1.setxSpeed(newxSpeed1);
- P1.setySpeed(newySpeed1);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement