Две вращающиеся точки - 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());
- }
- });
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д