Heim >Java >javaLernprogramm >Wie kann ich in einer Java-Anwendung mehrere springende Bälle erstellen und diese mithilfe einer Liste verwalten?

Wie kann ich in einer Java-Anwendung mehrere springende Bälle erstellen und diese mithilfe einer Liste verwalten?

Linda Hamilton
Linda HamiltonOriginal
2024-12-26 14:09:20123Durchsuche

How can I create multiple bouncing balls in a Java application using a list to manage them?

Mehrere springende Bälle in Java

Das Zeichnen mehrerer springender Bälle in einer Java-Anwendung kann erreicht werden, indem eine Liste zum Speichern der Bälle verwendet und iteriert wird hindurch, um jeden Ball zu bewegen und zu ziehen. Hier ist eine modifizierte Version Ihres Codes:

import java.awt.*;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;

public class Ball extends JPanel implements Runnable {

    List<Ball> balls = new ArrayList<Ball>();   
Color color;
int diameter;
long delay;
private int x;
private int y;
private int vx;
private int vy;

public Ball(String ballcolor, int xvelocity, int yvelocity) {
    if(ballcolor == "red") {
        color = Color.red;
    }
    else if(ballcolor == "blue") {
        color = Color.blue;
    }
    else if(ballcolor == "black") {
        color = Color.black;
    }
    else if(ballcolor == "cyan") {
        color = Color.cyan;
    }
    else if(ballcolor == "darkGray") {
        color = Color.darkGray;
    }
    else if(ballcolor == "gray") {
        color = Color.gray;
    }
    else if(ballcolor == "green") {
        color = Color.green;
    }
    else if(ballcolor == "yellow") {
        color = Color.yellow;
    }
    else if(ballcolor == "lightGray") {
        color = Color.lightGray;
    }
    else if(ballcolor == "magenta") {
        color = Color.magenta;
    }
    else if(ballcolor == "orange") {
        color = Color.orange;
    }
    else if(ballcolor == "pink") {
        color = Color.pink;
    }
    else if(ballcolor == "white") {     
        color = Color.white;
    }
    diameter = 30;
    delay = 40;
    x = 1;
    y = 1;
    vx = xvelocity;
    vy = yvelocity;
}

protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D)g;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    for (Ball ball : balls) {
        g.setColor(ball.color);
        g.fillOval(ball.x, ball.y, 30, 30); //adds color to circle
        g.setColor(Color.black);
        g2.drawOval(ball.x, ball.y, 30, 30); //draws circle
    }
}

public void run() {
    while(isVisible()) {
        try {
            Thread.sleep(delay);
        } catch(InterruptedException e) {
            System.out.println("interrupted");
        }
        for (Ball ball : balls) {
            ball.move();
        }
        repaint();
    }
}

public void move() {
    if(x + vx < 0 || x + diameter + vx > getWidth()) {
        vx *= -1;
    }
    if(y + vy < 0 || y + diameter + vy > getHeight()) {
        vy *= -1;
    }
    x += vx;
    y += vy;
}

private void start() {
    while(!isVisible()) {
        try {
            Thread.sleep(25);
        } catch(InterruptedException e) {
            System.exit(1);
        }
    }
    Thread thread = new Thread(this);
    thread.setPriority(Thread.NORM_PRIORITY);
    thread.start();
}

public static void main(String[] args) {
    Ball ball1 = new Ball("red",3,2);
    Ball ball2 = new Ball("blue",6,2);
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.getContentPane().add(ball1);
    f.getContentPane().add(ball2);
    f.setSize(400,400);
    f.setLocation(200,200);
    f.setVisible(true);
    ball1.start();
    ball2.start();
}
}

In diesem modifizierten Code:

  1. Die Ballliste wird zum Speichern von Instanzen der Ball-Klasse verwendet.
  2. Die paintComponent-Methode durchläuft die Ballliste und zeichnet jeden Ball auf dem Panel.
  3. Die run-Methode durchläuft auch die Ballliste und bewegt sich jeden Ball, bevor Sie das Panel neu streichen.

Vorteile der Verwendung einer Liste:

  • Sie können Bälle dynamisch hinzufügen und entfernen.
  • Sie können die Anzahl der Bälle in der Anwendung einfach steuern.
  • Die Liste verwaltet die Verweise auf jeden Ball, Vereinfachung der Speicherverwaltung.

Das obige ist der detaillierte Inhalt vonWie kann ich in einer Java-Anwendung mehrere springende Bälle erstellen und diese mithilfe einer Liste verwalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn