рисование случайных кругов, хранение их координат в массиве - PullRequest
2 голосов
/ 16 ноября 2010

Для домашней работы я хочу рисовать круги случайным образом по экрану.Если какие-либо круги перекрываются, то я хочу заполнить эти круги.Я начинаю с некоторого кода, который рисует круги на экране, где бы ни щелкнул указатель мыши.Я действительно не понимаю, как использовать случайные значения для определения окружностей, а также как хранить эти значения в массиве или массиве.Я думаю, что для заполнения кругов я просто использую оператор for, сравнивающий расстояние между центральными точками окружностей.Большое спасибо за любые предложения.Вот моя отправная точка, которую я пытаюсь выяснить, как изменить:

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) {}
   }
}

1 Ответ

1 голос
/ 16 ноября 2010

Вы хотите использовать

Math.random()

или Случайный класс

Поскольку это домашняя работа, я не хочу давать вам полное решение. Но ..

Вот подсказка .

Замените addMouseListener на цикл, чтобы нарисовать количество кружков на экране.

Внутри цикла, это один из случайных методов, чтобы получить 2 значения для X и Y, чтобы создать объект Point, и добавить его в массив.

Чтобы использовать объект Random, ваш код будет выглядеть следующим образом

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

Где 200 - максимальное число, это будет размер вашего экрана.

...