我的程序自动生成三角形,但是三角形在 JPanel 上的排列是随机的。如何按网格顺序绘制三角形?谢谢。
编辑:
for(int i = 0; i < 10; i++)
{
xCoord[0] = generator.nextInt(MAX_WIDTH);
yCoord[0] = generator.nextInt(MAX_HEIGHT);
xCoord[1] = (int) (xCoord[0] - xWidth);
xCoord[2] = (int) (xCoord[1] + (xWidth/2));
yCoord[1] = yCoord[0];
yCoord[2] = (int) (yCoord[1] - yHeight);
triangles.add( new Polygon(xCoord,yCoord, 3));
}
已编辑:所需输出
如何使程序生成许多模式,但它必须是对称形式?例如左右是对称的。我尝试过制作 Loop,但到目前为止它只生成 1 个模式。请帮忙:-(
*** *** OR ** ** OR *** *** etc (as long as it is symmetrical)
*** *** ** ** * *
* *
最佳答案
看看my solution to your previous question .
编辑:
修改上面链接中的示例,您可以将随机多边形点替换为一些更固定的多边形点。在paintComponent
方法中,您可以替换:
for (int j = 0; j < 3; j++) {
xCoord[j] = generator.nextInt(maxCellWidth)
+ (maxCellWidth * xMultiple);
yCoord[j] = generator.nextInt(maxCellHeight)
+ (maxCellHeight * yMultiple);
}
这样:
xCoord[0] = (maxCellWidth/2) + (maxCellWidth * xMultiple);
// use the following if you need the points to be fixed as well.
//xCoord[0] = generator.nextInt(maxCellWidth) + (maxCellWidth * xMultiple);
yCoord[0] = 5 + (maxCellHeight * yMultiple);
xCoord[1] = 5 + (maxCellWidth * xMultiple);
yCoord[1] = maxCellHeight - 5 + (maxCellHeight * yMultiple);
xCoord[2] = maxCellWidth - 5 + (maxCellWidth * xMultiple);
yCoord[2] = maxCellHeight - 5 + (maxCellHeight * yMultiple);
为了好玩,取消注释 xCoord[0] 的第二个设置将使顶点位于沿 x 轴的随机点,但三角形的底部两个点将是固定的,并且它们之间的距离恒定。
alt text http://img127.imageshack.us/img127/5809/picture5v.png
关于java - 按网格顺序排列三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1572168/