> Java > java지도 시간 > 목록을 사용하여 Java 애플리케이션에서 여러 개의 튀는 공을 생성하여 관리하려면 어떻게 해야 합니까?

목록을 사용하여 Java 애플리케이션에서 여러 개의 튀는 공을 생성하여 관리하려면 어떻게 해야 합니까?

Linda Hamilton
풀어 주다: 2024-12-26 14:09:20
원래의
123명이 탐색했습니다.

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

Java에서 여러 개의 튀는 공

Java 애플리케이션에서 여러 개의 튀는 공을 그리는 것은 목록을 사용하여 공을 저장하고 반복하는 방식으로 수행할 수 있습니다. 그것을 통해 각 공을 이동하고 그립니다. 코드의 수정된 버전은 다음과 같습니다.

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();
}
}
로그인 후 복사

이 수정된 코드에서는:

  1. 공 목록은 Ball 클래스의 인스턴스를 저장하는 데 사용됩니다.
  2. PaintComponent 메소드는 공 목록을 반복하고 패널에 각 공을 그립니다.
  3. run 메소드도 공 목록을 반복합니다. 공 목록을 작성하고 패널을 다시 칠하기 전에 각 공을 이동합니다.

목록 사용의 이점:

  • 동적으로 공을 추가하고 제거할 수 있습니다. .
  • 애플리케이션에서 공의 개수를 쉽게 조절할 수 있습니다.
  • 목록은 각 공에 대한 참조를 관리하여 메모리 관리를 단순화합니다.

위 내용은 목록을 사용하여 Java 애플리케이션에서 여러 개의 튀는 공을 생성하여 관리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿