Перемещение объекта GOval в круговом движении с помощью метода movePolar в Java - PullRequest
0 голосов
/ 06 ноября 2019

В настоящее время я создаю небольшой проект с использованием графической библиотеки ACM, в котором вам нужно будет переместить шарик (или объект) размером GOval , используя метод movePolar для перемещения по кругу. движение. До сих пор я знаю, что в movePolar() есть два аргумента, где первый r аргумент - это расстояние, которое вы хотите переместить, а второй аргумент - это угол, в который вы хотите переместиться. Но я не мог понять, какзаставить шар двигаться круговыми движениями, используя метод movePolar(). Я пытался использовать несколько movePolar(1,90), movePolar(1,45) и т. Д., Но до сих пор не получил желаемой цели. Вот мой код:

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Timer;

import acm.graphics.*;
import acm.program.*;

public class ColorCircleDecomp extends GraphicsProgram implements ActionListener {
    public static final int PROGRAM_WIDTH = 800;
    public static final int PROGRAM_HEIGHT = 600;
    public static final int BALL_SIZE = 50;
    public static final int DELAY_MS = 25;
    private GOval ball;
    //TODO create a private GOval here

    public void run() {
        //TODO add your ball here

        Timer t = new Timer(DELAY_MS, this);
         ball = new GOval(300,300,BALL_SIZE,BALL_SIZE);
         add(ball);
        t.start();
    }

    @Override
    public void actionPerformed(ActionEvent e) {

     ball.movePolar(1,90);
     ball.movePolar(1,0);
     ball.movePolar(1, 270);
     ball.movePolar(1, 180);

    }

    public void init() {
        setSize(PROGRAM_WIDTH, PROGRAM_HEIGHT);
    }

}

1 Ответ

0 голосов
/ 06 ноября 2019
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Timer;

import acm.graphics.*;
import acm.program.*;

public class ColorCircleDecomp extends GraphicsProgram implements ActionListener {
public static final int PROGRAM_WIDTH = 800;
public static final int PROGRAM_HEIGHT = 600;
public static final int BALL_SIZE = 50;
public static final int DELAY_MS = 25;
int i = 0;

private GOval ball;

public void run() {
    ball = new GOval (370, 540, BALL_SIZE, BALL_SIZE);
    Timer t = new Timer(DELAY_MS, this);
    t.start();
}

@Override
public void actionPerformed(ActionEvent e) {
    Color color = new Color(0, 0, 255);

    add(ball);

        i+=30;

    ball.setColor(color);
    ball.movePolar(130, i);

}

public void init() {
    setSize(PROGRAM_WIDTH, PROGRAM_HEIGHT);
}

}
...