円を描いてから、側面に触れずに最も多くの円を塗りつぶすというタスクがあります。円を描くことはできますし、ループを作成して円を六角形/ハニカム形式でパックすることもできますが、それらが円の内側にあるか外側にあるかを制御することはできません。
私はこれを使用しました: g.drawOval(50, 50, 300, 300); 私のサークルを指定します。実際に境界として正方形を指定しているとすれば、円の境界がどこにあるかを実際に判断することはできません。だから私は基本的に円でいっぱいの円ではなく、円でいっぱいの正方形を詰めています。
正しい方向に向けてください。私はJavaが初めてなので、これを完全に間違った方法で行ったかどうかはわかりません。私のコードは以下です。フレーム用の別のクラスと、メインを含む別のクラスがあります。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class DrawCircle extends JPanel
{
private int width, height, diameter;
public DrawFrame d;
public DrawCircle()
{
width = 400;
height = 400;
diameter = 300;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.blue);
g.drawOval(50, 50, 300, 300);
for(int i=50; i<200; i=i+20)
{
for(int j=50; j<350; j=j+10)
{
g.drawOval(j, i, 10, 10);
}
}
for(int i=60; i<200; i=i+20)
{
for(int j=55; j<350; j=j+10)
{
g.drawOval(j, i, 10, 10);
}
}
for(int i=330; i>190; i=i-20)
{
for(int j=340; j>40; j=j-10)
{
g.drawOval(j, i, 10, 10);
}
}
for(int i=340; i>190; i=i-20)
{
for(int j=345; j>40; j=j-10)
{
g.drawOval(j, i, 10, 10);
}
}
}
}