Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mencapai Pergerakan Objek Berperingkat di Jawa: Menggunakan Pemasa dan Kelewatan untuk Kesan Ninja Buah?

Bagaimana untuk Mencapai Pergerakan Objek Berperingkat di Jawa: Menggunakan Pemasa dan Kelewatan untuk Kesan Ninja Buah?

Susan Sarandon
Susan Sarandonasal
2024-11-01 05:44:02769semak imbas

How to Achieve Staggered Object Movement in Java: Utilizing Timers and Delays for a Fruit Ninja Effect?

Objek Bergerak dan Pemasa

Dalam konteks ini, anda mahu objek muncul secara rawak dari bahagian bawah skrin, naik ke ketinggian tertentu , dan kemudian turun semula dengan cara yang serupa dengan permainan Fruit Ninja. Walau bagaimanapun, anda menghadapi masalah di mana semua objek bermula pada masa yang sama kerana kekurangan kelewatan berperingkat.

Penyelesaian:

Untuk mengatasi masalah ini, anda boleh memperkenalkan kelewatan khusus untuk setiap objek. Di bawah ialah penjelasan tentang pendekatan yang mungkin menggunakan kelas Shape dengan ActionListener melakukan pergerakan berdasarkan pembilang kelewatan yang semakin berkurangan.

1. Kelas Bentuk dengan Lengah dan Logik Pergerakan:

<code class="java">class Shape {

    private int randomDelayedStart;
    private boolean draw = false;
    private boolean down = false;
    private int y = D_HEIGHT; // Initial position at the bottom of the screen

    public void decreaseDelay() {
        if (randomDelayedStart <= 0) {
            draw = true;
        } else {
            randomDelayedStart -= 1;
        }
    }

    public void move() {
        if (draw) {
            if (y <= 50) {
                down = true;
            }

            if (down) {
                y += INCREMENT;
            } else {
                y -= INCREMENT;
            }
        }
    }
}</code>

2. Permulaan Rawak untuk Setiap Bentuk:

Apabila mencipta setiap objek Bentuk, anda boleh menetapkan nilai tunda secara rawak:

<code class="java">for (int i = 0; i < 20; i++) {
    int randXLoc = random.nextInt(D_WIDTH);
    int randomDelayedStart = random.nextInt(100);
    Shape shape = new Shape(randXLoc, randomDelayedStart);
    list.add(shape);
}</code>

3. ActionListener untuk Mencetuskan Pergerakan Bentuk:

Dalam satu Pemasa, ActionListener boleh melelakan semua bentuk, mengurangkan pembilang kelewatan mereka dan menggunakan kaedah pergerakan mereka :

<code class="java">ActionListener taskPerformer = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        for (Shape s : shapes) {
            s.decreaseDelay();
            s.move();
            repaint();
        }
    }
};</code>

4. Memulakan Pemasa:

Selepas memulakan semua bentuk, mulakan pemasa untuk memulakan pergerakan berterusan:

<code class="java">timer.start();</code>

Pendekatan ini membenarkan kelewatan dan pergerakan bebas untuk setiap bentuk, memastikan bahawa mereka muncul dan bergerak secara berperingkat, menyerupai tingkah laku yang diingini dalam Fruit Ninja.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pergerakan Objek Berperingkat di Jawa: Menggunakan Pemasa dan Kelewatan untuk Kesan Ninja Buah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn