这就是我的输出:
这就是我想要的方式:
public void drawSquare(Graphics g, int x, int y, int size)
{
g.drawRect(x,y,size,size);
if(size >2 && x < 1001 && y <= 200)
{
x+= 10+size;
// y = I know I'm supposed to modify y, but I'm lost on how to make it level out...
size = size*3/4;
drawSquare(g,x,y,size);
}
}
帮助将不胜感激。
答案 0 :(得分:0)
问题是y轴指向下方,因此正方形的顶部是对齐的。相反,为了保持底部对齐,请考虑每个正方形的y坐标必须通过与前一个正方形的尺寸差异进行调整。我的意思是,如果你看任何两个正方形,右边的正方形需要向下移动一些数量,这个数量等于两个正方形之间的大小差异。
public void drawSquare(Graphics g, int x, int y, int size)
{
g.drawRect(x,y,size,size);
if(size >2 && x < 1001 && y <= 200)
{
x+= 10+size;
int newSize = size*3/4;
y = y + size - newSize; // (size - newSize) is the difference
size = newSize;
drawSquare(g,x,y,size);
}
}