使用隨機計時器移動對象
您的目標是創建從屏幕底部隨機出現的移動對象,達到一定高度,並且然後下降。為了避免所有形狀同時啟動,您需要為每個物件實作單獨的計時器。
下面提供的方法利用 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中文網其他相關文章!