В настоящее время я создаю небольшой проект с использованием графической библиотеки 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);
}
}