ランダム タイマーによるオブジェクトの移動
あなたの目標は、画面の下からランダムに現れ、特定の高さに到達し、それから下ります。すべてのシェイプが同時に開始されるのを避けるには、オブジェクトごとに個別のタイマーを実装する必要があります。
以下に示すアプローチでは、ランダムな初期遅延を含む各オブジェクトのプロパティをカプセル化する 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 中国語 Web サイトの他の関連記事を参照してください。