Две вращающиеся точки - Java

Узнай цену своей работы

Формулировка задачи:

Задание состоит в том чтобы остались только две точки вращающиеся а у меня линии, и еще не могу сделать чтобы при нажатии на кнопку они вращались в другую сторону, они начинают вращаться сначала а потом снова начинают крутиться так же как при первоначальном запуске, помогите пожалуйста исправить. Вот код работаю в эклипсе
Листинг программы
  1. package prog7;
  2. import java.applet.*;
  3. import java.awt.*;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. public class myprogseven extends Applet implements Runnable {
  7. Thread t = null; // поток
  8. int i = 0,// i -- текущее положение;
  9. x1 = 200,
  10. y1 = 200, //x1, y1 -- координаты первого
  11. // конца отрезка
  12. x3 = 50, y3 = 50,
  13. x4 = 110, y4 = 110,
  14. x2 = 220, y2 = 50,
  15. num = 90; // x2, y2 -- координаты второго конца отрезка; num --
  16. // кол-во шагов по окружности (90 -- шаг на 4 градуса)
  17. double r2 = 100, ugi2 = 2* Math.PI / num, ug2; // r -- длина отрезка;
  18. double r3 = 100, ugi3 = Math.PI / num, ug3;// ugi -- угол поворота,
  19. double r4 = 100, ugi4 = Math.PI / num, ug4;// ug -- расчёт текущего угла
  20. public void init() {
  21. this.setSize(380, 380); // задаём размер апплета
  22. }
  23. public void start() {
  24. if (t == null) // если поток пуст
  25. t = new Thread(this); // создаём новый
  26. t.start(); // запускаем поток
  27. }
  28. public void run() {
  29. while (true) // выполняем в бесконечном цикле
  30. {
  31. try {
  32. Thread.sleep(25); // задержка в мс
  33. ug2 = i++ * ugi2; // рассчитываем текущий угол
  34. x2 = (int) Math.round(x1 + r2 * Math.cos(ug2)); // считаем
  35. // координаты
  36. // второго конца
  37. y2 = (int) Math.round(y1 + r2 * Math.sin(ug2));
  38. x3 = (int) Math.round(x1 + r3 * Math.tan(ug3)); // считаем
  39. // координаты
  40. // второго конца
  41. y3 = (int) Math.round(y1 + r3 * Math.sin(ug3));
  42.  
  43. if (i >= num)
  44. i = 0; // если прошли окружность, то начинаем снова
  45. repaint(); // вызываем отрисовку отрезка
  46. } catch (InterruptedException e) {
  47. }
  48.  
  49. Button b1 = new Button("Кнопка 1");
  50. b1.setBounds(1,100,100,20);
  51. add(b1);
  52. b1.addActionListener(new ActionListener(){
  53. public void actionPerformed(ActionEvent event){
  54. try {
  55. Thread.sleep(25); // задержка в мс
  56. ug2 = i++ * ugi2; // рассчитываем текущий угол
  57. x2 = (int) Math.round(x1 - r2 * Math.cos(ug2)); // считаем
  58. // координаты
  59. // второго конца
  60. y2 = (int) Math.round(y1 + r2 * Math.sin(ug2));
  61. x3 = (int) Math.round(x1 + r3 * Math.tan(ug3)); // считаем
  62. // координаты
  63. // второго конца
  64. y3 = (int) Math.round(y1 + r3 * Math.sin(ug3));
  65. if (i >= num)
  66. i = 0; // если прошли окружность, то начинаем снова
  67. repaint(); // вызываем отрисовку отрезка
  68. }catch(InterruptedException e){
  69. }
  70. }});
  71.  
  72. }
  73. }
  74. public void paint(Graphics dr) {
  75. {
  76. //dr.setColor(Color.green);
  77. dr.drawLine(x3, y3, x2, y2);
  78. dr.setColor(Color.blue);
  79. dr.drawLine(x3, y3, x2-6, y2-50);
  80. //dr.drawLine(x3, x3, x4, y4);
  81. }
  82. }
  83. }

Решение задачи: «Две вращающиеся точки»

textual
Листинг программы
  1. public void init() {
  2.     this.setSize(380, 380); // задаём размер апплета
  3.     this.addMouseListener(new MouseAdapter() {
  4.         @Override
  5.         public void mouseClicked(MouseEvent e) {
  6.             System.out.println(e.getX() + " " + e.getY());
  7.         }
  8.     });
  9. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут