무작위 타이머로 움직이는 물체
당신의 목표는 화면 하단에서 무작위로 나타나고, 특정 높이에 도달하고, 그런 다음 내려갑니다. 모든 모양이 동시에 시작되는 것을 방지하려면 각 개체에 대해 개별 타이머를 구현해야 합니다.
아래에 제공된 접근 방식은 임의의 초기 지연을 포함하여 각 개체의 속성을 캡슐화하는 Shape 클래스를 활용합니다. 타이머의 액션 리스너 내에서 Shape 메서드가 호출되어 이동, 지연 감소 및 그리기를 처리합니다.
<code class="java">import java.awt.event.ActionListener; import java.util.List; import java.util.Random; class Shape { // Object properties int x; int y; boolean draw; int randomDelay; // Delay before the object starts moving public Shape(int x, int randomDelay) { this.x = x; this.y = 0; // Start at the bottom of the screen this.draw = false; this.randomDelay = randomDelay; } // Object movement logic public void move() { if (draw) { y++; // Move up or down based on the current state } } // Decrease the delay public void decreaseDelay() { randomDelay--; if (randomDelay <= 0) { draw = true; // Start drawing the object once the delay reaches zero } } // Draw the object public void draw(Graphics g) { if (draw) { // Draw the shape on the screen } } }
이 접근 방식을 사용하면 각 셰이프에 고유한 무작위 지연이 있어 이동이 시작되지 않습니다. 동시에.
<code class="java">// Create a list of Shape objects with random delays 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); // Set a random delay between 0 and 499 milliseconds shapes.add(new Shape(randomXLoc, randomDelay)); } // Initialize a timer and specify the action listener Timer timer = new Timer(10, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { for (Shape shape : shapes) { shape.move(); shape.decreaseDelay(); shape.draw(g); // Draw the shape if allowed } } }); // Start the timer timer.start();</code>
위 내용은 Java에서 개별 타이머를 사용하여 무작위로 움직이는 객체를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!