ホームページ > Java > &#&チュートリアル > Java アプリケーションでリストを使用して複数の跳ねるボールを作成し、それらを管理するにはどうすればよいですか?

Java アプリケーションでリストを使用して複数の跳ねるボールを作成し、それらを管理するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-26 14:09:20
オリジナル
119 人が閲覧しました

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 メソッドも同様に反復処理します。ボールのリストを作成し、パネルを再ペイントする前に各ボールを移動します。

リストを使用する利点:

  • ボールを追加および削除できます。
  • アプリケーションでボールの数を簡単に制御できます。
  • list は各ボールへの参照を管理し、メモリ管理を簡素化します。

以上がJava アプリケーションでリストを使用して複数の跳ねるボールを作成し、それらを管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート