Advertisement
Guest User

Untitled

a guest
Sep 16th, 2019
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. public class Anim extends JPanel implements Runnable {
  2.  
  3. Pilka P1;
  4. boolean going = true;
  5.  
  6. Thread animator;
  7. Pilka P2;
  8. double deltaX;
  9. double deltaY;
  10. double distance;
  11.  
  12. public Anim() {
  13. P1 = new Pilka(50, 80, 40, Color.green);
  14. P1.setX(50);
  15. P1.setY(80);
  16. P1.setxSpeed(4);
  17. P1.setySpeed(2);
  18.  
  19. P2 = new Pilka(50, 80, 70, Color.green);
  20. P2.setX(150);
  21. P2.setY(80);
  22. P2.setxSpeed(4);
  23. P2.setySpeed(2);
  24.  
  25.  
  26.  
  27. animator = new Thread(this);
  28. animator.start();
  29.  
  30. }
  31.  
  32. @Override
  33. public void paintComponent(Graphics g) {
  34. super.paintComponent(g);
  35.  
  36. P1.draw(g);
  37. P2.draw(g);
  38. g.setColor(Color.green);
  39.  
  40.  
  41.  
  42. // draw center of circle
  43. g.fillOval((int) P1.getX() - 5, (int) P1.getY() - 5, 10, 10);
  44. g.fillOval((int) P2.getX() - 5, (int) P2.getY() - 5, 10, 10);
  45.  
  46. }
  47.  
  48. @Override
  49. public void run() {
  50. while (going) {
  51. P1.move();
  52. P2.move();
  53.  
  54. checkCollision();
  55.  
  56. repaint();
  57.  
  58. try {
  59. Thread.sleep(20);
  60. } catch (InterruptedException ex) {
  61. }
  62. }
  63. }
  64.  
  65. public void checkCollision() {
  66.  
  67. deltaX = Math.abs(P1.getX() - P2.getX());
  68. deltaY = Math.abs(P1.getY() - P2.getY());
  69. distance = deltaX * deltaX + deltaY * deltaY;
  70.  
  71. if (distance < (P1.getDiametar() / 2 + P2.getDiametar() / 2) * (P1.getDiametar() / 2 + P2.getDiametar() / 2)) {
  72.  
  73. double newxSpeed1 = (P1.getxSpeed() * (4 - 7) + (2 * 7 * P2.getxSpeed())) / 11;
  74.  
  75. double newxSpeed2 = (P2.getxSpeed() * (7 - 4) + (2 * 4 * P1.getxSpeed())) / 11;
  76.  
  77. double newySpeed1 = (P1.getySpeed() * (4 - 7) + (2 * 7 * P2.getySpeed())) / 11;
  78.  
  79. double newySpeed2 = (P2.getySpeed() * (7 - 4) + (2 * 4 * P1.getySpeed())) / 11;
  80.  
  81. P2.setxSpeed(newxSpeed2);
  82. P2.setySpeed(newySpeed2);
  83. P1.setxSpeed(newxSpeed1);
  84. P1.setySpeed(newySpeed1);
  85.  
  86. }
  87. }
  88.  
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement