[英]Drawing mountains using 1px swing rectangles
我正在尝试使用1宽度矩形(类似于积分)绘制山脉背景。 我将第一个点随机化到屏幕的最左侧,将二进制数随机化并绘制第一个矩形。
如果二进制数为0,则下一个矩形将低1px。 其他更高。 等等在for循环中。
在下一个循环中,有95%的可能性方向不会改变,并且会不断上升/下降。 方向改变的机会为5%。 为此,我使用的是1到1000之间的随机数。
public Landscape(Graphics g)
{
Graphics2D g2d = (Graphics2D)g;
Random rand = new Random();
int first = rand.nextInt((800 - 200) + 1) + 200;
g2d.fillRect(0, 800 - first, 1, first);
int d = first % 2;
for(int i = 1; i <= 800; i++) {
int choose = rand.nextInt((1000 - 1) + 1) + 1;
if(choose > 950) {
d = -(d);
}
if(d == -1) {
first += 1;
} else {
first -= 1;
}
g2d.fillRect(i, 800 - first, 1, first);
}
}
这就是我在一半情况下得到的效果。 但是有时候我会得到这样的东西:
这怎么可能? 怎么了
这里:
int d = first % 2;
d为1或0。如果d分配为0,则if(d == -1) {
始终为false,因此图将单调向下移动。
您正在寻找两种状态的解决方案来确定山是上升还是下降,因此请使用布尔值。 也许像这样:
boolean direction = rand.nextBoolean();
// 1 in 20 chance, same as 5 in 100, same as 50 in 1000 chance
if (rand.nextInt(20) == 0) {
direction = !direction;
}
if (direction) {
// ...
} else {
// ...
}
我自己,我会考虑使用分形。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.