Java 拉豆机

Java 拉豆机,java,algorithm,swing,mat,Java,Algorithm,Swing,Mat,我试着画如下: @Override protected void paintComponent(Graphics g) { super.paintComponent(g); int width = getWidth(); int height = getHeight(); int xCenter = getWidth() / 2; int yCenter = getHeight() / 2; g.drawLine(xCenter + 20,

我试着画如下:

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);

    int width = getWidth();
    int height = getHeight();

    int xCenter = getWidth() / 2;
    int yCenter = getHeight() / 2;

    g.drawLine(xCenter + 20, yCenter, xCenter + 20, yCenter + 20); // right horizontal line
    g.drawLine(xCenter, yCenter, xCenter, yCenter + 20); //left horizontal line
    g.drawLine(xCenter + 20, yCenter + 20, xCenter + 70, yCenter + 110); // right line
    g.drawLine(xCenter, yCenter + 20, xCenter - 50, yCenter + 110); //left line
    g.drawLine(xCenter - 50, yCenter + 110, xCenter + 70, yCenter + 110);//base line

    //draw nails
    for (int i = 1; i <= nails; i++) {
        for (int j = 0; j < i; j++) {
            g.fillOval(xCenter  + i, yCenter + 20 * j, (int)(0.09 * xCenter) / 3, (int)(0.09 * yCenter) / 3);
        }
    }
}
@覆盖
受保护组件(图形g){
超级组件(g);
int width=getWidth();
int height=getHeight();
int xCenter=getWidth()/2;
int yCenter=getHeight()/2;
g、 抽绳(xCenter+20,yCenter,xCenter+20,yCenter+20);//右水平线
g、 抽绳(xCenter,yCenter,xCenter,yCenter+20);//左水平线
g、 抽绳(xCenter+20,yCenter+20,xCenter+70,yCenter+110);//右线
g、 抽绳(xCenter,yCenter+20,xCenter-50,yCenter+110);//左线
g、 抽绳(xCenter-50,yCenter+110,xCenter+70,yCenter+110);//基线
//画钉子

对于(int i=1;i,这里有几个问题:

  • fillOval(xCenter+i
    需要是
    fillOval(xCenter+20*i
    )。这就解释了为什么每一行都比另一行长一点,因为你的指甲被挤压在一起并相互重叠
  • 现在,你有更多的钉子在上面。如果你让外环倒数,你可以把金字塔转过来
  • 你的指甲看起来像正方形,因为它们太小,没有圆角
当固定
fillOval
的x坐标并使th点变大(0.29而不是0.09)时,看起来如下所示:


为什么否决投票:/0.09*xCenter)/3的结果值是多少?@d.j.brown它代表指甲的高度和宽度(椭圆形)我认为没有问题。@user1058652您是对的,但由于我不知道具体的输出应该是什么,所以很难提供帮助。您的“钉子”之间的间距似乎不正确,您应该对此做出解释。