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

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

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

Задание состоит в том чтобы остались только две точки вращающиеся а у меня линии, и еще не могу сделать чтобы при нажатии на кнопку они вращались в другую сторону, они начинают вращаться сначала а потом снова начинают крутиться так же как при первоначальном запуске, помогите пожалуйста исправить. Вот код работаю в эклипсе
package prog7; 
  
import java.applet.*; 
import java.awt.*; 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
  
public class myprogseven extends Applet implements Runnable { 
        Thread t = null; // поток 
  
        int             i = 0,// i -- текущее положение;
                        x1 = 200, 
                        y1 = 200,  //x1, y1 -- координаты первого 
                                   // конца отрезка 
                        x3 = 50, y3 = 50, 
                        x4 = 110, y4 = 110, 
                        x2 = 220, y2 = 50, 
                        num = 90; // x2, y2 -- координаты второго конца отрезка; num -- 
                                  // кол-во шагов по окружности (90 -- шаг на 4 градуса) 
  
        double r2 = 100, ugi2 = 2* Math.PI / num, ug2; // r -- длина отрезка;  
        double r3 = 100, ugi3 =  Math.PI / num, ug3;// ugi -- угол поворота,  
        double r4 = 100, ugi4 =  Math.PI / num, ug4;// ug -- расчёт текущего угла 
  
        public void init() { 
                this.setSize(380, 380); // задаём размер апплета 
  
        } 
  
        public void start() { 
                if (t == null) // если поток пуст 
                        t = new Thread(this); // создаём новый 
                t.start(); // запускаем поток 
        } 
  
        public void run() { 
                while (true) // выполняем в бесконечном цикле 
                { 
                        try { 
                            Thread.sleep(25); // задержка в мс 
                                ug2 = i++ * ugi2; // рассчитываем текущий угол 
                                x2 = (int) Math.round(x1 + r2 * Math.cos(ug2)); // считаем 
                                // координаты 
                                // второго конца 
                                y2 = (int) Math.round(y1 + r2 * Math.sin(ug2)); 
  
                                x3 = (int) Math.round(x1 + r3 * Math.tan(ug3)); // считаем 
                                // координаты 
                                // второго конца 
                                y3 = (int) Math.round(y1 + r3 * Math.sin(ug3)); 

                                if (i >= num) 
                                        i = 0; // если прошли окружность, то начинаем снова 
                                repaint(); // вызываем отрисовку отрезка 
                        } catch (InterruptedException e) { 
                        } 

                       Button b1 = new Button("Кнопка 1");
                        b1.setBounds(1,100,100,20);
                        add(b1);
                        b1.addActionListener(new ActionListener(){
                            public void actionPerformed(ActionEvent event){
                                try { 
                                    Thread.sleep(25); // задержка в мс 
                                        ug2 = i++ * ugi2; // рассчитываем текущий угол 
                                        x2 = (int) Math.round(x1 - r2 * Math.cos(ug2)); // считаем 
                                        // координаты 
                                        // второго конца 
                                        y2 = (int) Math.round(y1 + r2 * Math.sin(ug2)); 
          
                                        x3 = (int) Math.round(x1 + r3 * Math.tan(ug3)); // считаем 
                                        // координаты 
                                        // второго конца 
                                        y3 = (int) Math.round(y1 + r3 * Math.sin(ug3)); 
          
                                        if (i >= num) 
                                                i = 0; // если прошли окружность, то начинаем снова 
                                        repaint(); // вызываем отрисовку отрезка 
                                }catch(InterruptedException e){
                            }
                        }});

                        }
        } 
       
        public void paint(Graphics dr) { 
  
                { 
                        //dr.setColor(Color.green); 
                        dr.drawLine(x3, y3, x2, y2); 
                        dr.setColor(Color.blue);
                        dr.drawLine(x3, y3, x2-6, y2-50); 
                        //dr.drawLine(x3, x3, x4, y4); 
                } 
        } 
}

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

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

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


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

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

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