Вот что я хочу сделать для домашней работы:
Разработайте и внедрите программу, которая рисует круги, радиус и местоположение каждого круга определяются случайным образом. Если круг не совпадает ни с одним другим кругом, нарисуйте этот круг черным цветом. Если круг перекрывает один или несколько кругов, нарисуйте его голубым. Используйте массив для хранения представления каждого круга, затем определите цвет каждого круга. Два круга перекрываются, если расстояние между их центральными точками меньше суммы их радиусов.
Вот код, который у меня есть:
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.*;
import java.math.*;
public class RandomCircles extends JPanel
{
private int[] sizeArray = new int [4]; // radius of each circle
private int[] xArray = new int [4]; //array to store x coordinates of circles
private int[] yArray = new int [4]; //array to store y coordinates of circles
public RandomCircles()
{
Random r = new Random();
for (int i = 0; i<xArray.length; i++){
//random numbers from 1 to 20;
xArray[i] = r.nextInt(200) + 1;
}
for (int i = 0; i<yArray.length; i++){
yArray[i] = r.nextInt(200) + 1;
}
for (int i = 0; i<sizeArray.length; i++){
sizeArray[i] = r.nextInt(100) +1;
}
setBackground (Color.white);
setPreferredSize (new Dimension(300, 200));
}
// Draws all of the circles stored in the array.
public void paintComponent (Graphics page)
{
super.paintComponent(page);
for (int i = 0 ;i<xArray.length; i++) //this is an iterator that draws the circles and checks for overlapping radii
{
for (math.sqrt((x1-x2)*((x1-x2))-((y1-y2)*(y1-y2));
{//math.sqrt((x1-x2)*(x1-x2)-(y1-y2)*(y1-y2)), go back and read chapter 7
page.fillOval(xArray[i], yArray[i], sizeArray[i], sizeArray[i]);
}
}
}
public static void main (String[] args)
{
JFrame frame = new JFrame ("Circles");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add (new RandomCircles());
frame.pack();
frame.setVisible(true);
}
}
После того, как я принял полученный совет и попытался пройти этот шаг за шагом, я добился большого прогресса. Я застрял в последней части проекта, которая заключается в сравнении центральных точек окружностей с суммой их радиусов, чтобы определить, перекрываются ли окружности. Я думаю, что я могу использовать функцию math.sqrt, чтобы сравнить их, но я не уверен, как правильно ее реализовать. Я знаю, что как только я выясню, как проверить, перекрываются ли они (логическое значение истинно), я нарисую этот круг в Cyan. Если у кого-то есть какой-либо вклад, я был бы очень признателен, но я понимаю, если нет, я знаю, что просить слишком много помощи не хорошо. Большое спасибо.