Home > Java > javaTutorial > How to Create Randomly Moving Objects with Individual Timers in Java?

How to Create Randomly Moving Objects with Individual Timers in Java?

Barbara Streisand
Release: 2024-10-29 16:32:02
Original
367 people have browsed it

 How to Create Randomly Moving Objects with Individual Timers in Java?

Moving Objects with Random Timers

Your goal is to create moving objects that randomly appear from the screen's bottom, reach a certain height, and then descend. To avoid all shapes starting simultaneously, you need to implement individual timers for each object.

The approach provided below utilizes a Shape class that encapsulates each object's properties, including its random initial delay. Inside the timer's action listener, the Shape methods are called to handle the movement, delay reduction, and drawing.

<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
        }
    }
}
Copy after login

This approach ensures that each shape has its own unique random delay, preventing them from starting their movement at the same time.

<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>
Copy after login

The above is the detailed content of How to Create Randomly Moving Objects with Individual Timers in Java?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template