
무작위 타이머로 움직이는 물체
당신의 목표는 화면 하단에서 무작위로 나타나고, 특정 높이에 도달하고, 그런 다음 내려갑니다. 모든 모양이 동시에 시작되는 것을 방지하려면 각 개체에 대해 개별 타이머를 구현해야 합니다.
아래에 제공된 접근 방식은 임의의 초기 지연을 포함하여 각 개체의 속성을 캡슐화하는 Shape 클래스를 활용합니다. 타이머의 액션 리스너 내에서 Shape 메서드가 호출되어 이동, 지연 감소 및 그리기를 처리합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <code class = "java" >import java.awt.event.ActionListener;
import java.util.List;
import java.util.Random;
class Shape {
int x;
int y;
boolean draw;
int randomDelay;
public Shape(int x, int randomDelay) {
this.x = x;
this.y = 0;
this.draw = false;
this.randomDelay = randomDelay;
}
public void move() {
if (draw) {
y++;
}
}
public void decreaseDelay() {
randomDelay--;
if (randomDelay <= 0) {
draw = true;
}
}
public void draw(Graphics g) {
if (draw) {
}
}
}
|
로그인 후 복사
이 접근 방식을 사용하면 각 셰이프에 고유한 무작위 지연이 있어 이동이 시작되지 않습니다. 동시에.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <code class = "java" >
List<Shape> shapes = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Random random = new Random();
int randomXLoc = random.nextInt(width);
int randomDelay = random.nextInt(500);
shapes.add( new Shape(randomXLoc, randomDelay));
}
Timer timer = new Timer(10, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (Shape shape : shapes) {
shape.move();
shape.decreaseDelay();
shape.draw(g);
}
}
});
timer.start();</code>
|
로그인 후 복사
위 내용은 Java에서 개별 타이머를 사용하여 무작위로 움직이는 객체를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!