这就是我想要完成的功课: 设计并实现绘制圆的程序,每个圆的半径和位置随机确定。如果圆圈不与任何其他圆圈重叠,则将该圆圈绘制成黑色。如果圆圈与一个或多个圆圈重叠,请以青色绘制。使用数组存储每个圆的表示,然后确定每个圆的颜色。如果两个圆的中心点之间的距离小于它们的半径之和,则两个圆重叠。
这是我到目前为止的代码:
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函数来比较它们,但我不确定如何正确实现它。我知道,一旦我弄清楚如何检查,如果它们重叠(布尔值为真),那么我将在青色中绘制该圆圈。如果有人有任何意见,我会非常感激,但我知道如果没有,我知道要求太多帮助并不好。非常感谢你。
答案 0 :(得分:4)
我迷失了如何为圆的半径生成随机数....
首先,编写代码以创建一个具有固定位置和半径的圆。
然后展开:调用randomGenerator.nextInt()
几次以获得位置和半径的随机值。
下一步:将其置于10次循环中
下一步:运行循环N次,再次从randomGenerator.nextInt()
获得N
食谱:总是从最简单的例子开始(我怎么画圆圈?)。然后逐步扩展它。避免“我可以一次做所有事情。”
答案 1 :(得分:1)
您已经在生成随机int。现在您需要将值存储在数组中。
是的,只需将每个圈子与其他圈子进行比较,以确定它是否重叠。