Dans cet exemple, nous allons créer une application Java qui dessine plusieurs balles sur l'écran qui rebondissent sur les bords du cadre.
Lorsque vous essayez de dessiner plusieurs boules, elles s'écrasent les unes les autres car elles sont ajoutées à la même emplacement.
Pour résoudre ce problème, nous devons :
Voici un code modifié qui implémente ces modifications :
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; for (Ball ball : balls) { ball.paint(g2); } } public void run() { while (isVisible()) { try { Thread.sleep(delay); } catch (InterruptedException e) { System.out.println("interrupted"); } move(); repaint(); } } public void move() { for (Ball ball : balls) { int newX = ball.x + ball.vx; int newY = ball.y + ball.vy; if(newX + ball.diameter > getWidth()) { ball.vx *= -1; } if(newY + ball.diameter > getHeight()) { ball.vy *= -1; } if(newX < 0) { ball.vx *= -1; } if(newY < 0) { ball.vy *= -1; } ball.x = newX; ball.y = newY; } } 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); ball1.balls.add(ball1); ball2.balls.add(ball2); f.setSize(400,400); f.setLocation(200,200); f.setVisible(true); ball1.start(); ball2.start(); } }
Dans cette solution mise à jour :
En suivant ces étapes, nous pouvons créer un programme qui réussit à dessiner plusieurs balles rebondissantes sur l'écran.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!