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(); } }
この変更されたコード内:
リストを使用する利点:
以上がJava アプリケーションでリストを使用して複数の跳ねるボールを作成し、それらを管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。