Maison >Java >javaDidacticiel >Comment puis-je créer une application Java qui affiche plusieurs balles rebondissantes sans qu'elles ne se chevauchent ?
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 <p>Dans cette solution mise à jour :</p> <ul> <li>Nous créons des objets Ball séparés et ajoutons les à une liste.</li> <li>Nous parcourons la liste dans paintComponent pour dessiner tous les balles.</li> <li>Chaque balle a son propre fil de mouvement, empêchant l'écrasement.</li> <li>Nous implémentons également une méthode de démarrage pour garantir que le fil démarre une fois que le cadre est visible.</li> </ul> <p>En suivant ces étapes, nous pouvons créer un programme qui réussit à dessiner plusieurs balles rebondissantes sur l'écran.</p></ball></ball>
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!