2010-11-16 23 views
2

Pour les devoirs, je veux dessiner des cercles au hasard autour de l'écran. Si l'un des cercles se chevauche, alors je veux remplir ces cercles. Je commence avec un code qui dessine des cercles sur l'écran partout où le pointeur de la souris est cliqué. Je suis vraiment confus sur la façon d'utiliser des valeurs aléatoires pour déterminer les cercles et aussi comment stocker ces valeurs dans un tableau ou un arraylist. Je pense que pour remplir les cercles, je vais juste utiliser une expression pour comparer la distance entre les centres des cercles. Merci beaucoup pour vos suggestions. Voici mon point de départ que je suis en train de comprendre comment modifier:dessiner des cercles aléatoires, stocker leurs coorindates dans un tableau

import java.util.ArrayList; 
import javax.swing.JPanel; 
import java.awt.*; 
import java.awt.event.*; 

public class DotsPanel extends JPanel 
{ 
    private final int SIZE = 6; // radius of each dot 

    private ArrayList<Point> pointList; 

    //----------------------------------------------------------------- 
    // Constructor: Sets up this panel to listen for mouse events. 
    //----------------------------------------------------------------- 
    public DotsPanel() 
    { 
     pointList = new ArrayList<Point>(); 

     addMouseListener (new DotsListener()); 

     setBackground (Color.black); 
     setPreferredSize (new Dimension(300, 200)); 
    } 

    //----------------------------------------------------------------- 
    // Draws all of the dots stored in the list. 
    //----------------------------------------------------------------- 
    public void paintComponent (Graphics page) 
    { 
     super.paintComponent(page); 

     page.setColor (Color.green); 

     for (Point spot : pointList) 
     page.fillOval (spot.x-SIZE, spot.y-SIZE, SIZE*2, SIZE*2); 

     page.drawString ("Count: " + pointList.size(), 5, 15); 
    } 

    //***************************************************************** 
    // Represents the listener for mouse events. 
    //***************************************************************** 
    private class DotsListener implements MouseListener 
    { 
     //-------------------------------------------------------------- 
     // Adds the current point to the list of points and redraws 
     // the panel whenever the mouse button is pressed. 
     //-------------------------------------------------------------- 
     public void mousePressed (MouseEvent event) 
     { 
     pointList.add(event.getPoint()); 
     repaint(); 
     } 

     //-------------------------------------------------------------- 
     // Provide empty definitions for unused event methods. 
     //-------------------------------------------------------------- 
     public void mouseClicked (MouseEvent event) {} 
     public void mouseReleased (MouseEvent event) {} 
     public void mouseEntered (MouseEvent event) {} 
     public void mouseExited (MouseEvent event) {} 
    } 
} 

Répondre

1

Vous voulez utiliser

Math.random()

ou la classe Random

Comme cela, il devoirs, je ne » Je veux vous donner la solution complète. Mais ..

Voici un indice.

Remplacez addMouseListener par une boucle pour dessiner le nombre de cercles sur l'écran.

A l'intérieur de la boucle, est l'une des méthodes aléatoires pour obtenir 2 valeur pour X et Y pour créer votre objet Point, et l'ajouter au tableau.

Pour utiliser l'objet aléatoire, votre code ressemblera à ceci

Random random = new Random(); 
int x = random.nextInt(200); 

Où 200 est le nombre maximal, ce serait la taille de votre écran.