如何保存/存储随机函数的输出



我正在编写不同季节的树(尽管树干和随机分支的原始代码不是我自己的)。对于冬天,我想让树保持随机,但也要有动画雪花。

但是,每次调用创建树的函数时,随机数(显然)都不同。有没有办法保存函数的输出(或只是其中的 random() 函数的输出并绘制该输出?

draw()函数调用创建树的函数,因此如果多次调用它,树将迅速变化,因为它每次都是随机的。树函数必须重复自己才能绘制树,所以有很多随机数。最终,我只想画一棵随机化的树,然后重复画那棵树,这样画函数就可以反复运行而不遮盖树。以下是我要保存的随机数的 2 行代码:

rotate(random(-0.05,0.05));
    if (random(1.0) < 0.6) {

你想在这里使用 randomSeed() 函数。如果你每次都在 draw() 函数的顶部调用它,使用相同的数字,那么你将得到相同的"随机"树。如果您更改数字,您将获得不同的"随机"树。如果你想要一个新的树(也许在点击鼠标时),那么你可以改变数字。例如:

let rs;
function setup() {
  rs = random(0, 1000);
  // your code
}
function draw() {
  randomSeed(rs);
  // your code
}
function mouseClicked {
  rs = random(0, 1000);
}

您可以通过将值存储在变量中来执行此操作。下面是一个简化的示例:

var x;
var y;
function setup(){
  createCanvas(500, 500);
  x = random(width);
  y = random(height);
}
function draw(){
  background(32);
  ellipse(x, y, 25, 25);
}

这只是一个简单的示例,但通过使用存储自己的值的 Tree 类之类的东西,您可以变得更漂亮。但想法是一样的:生成一次随机值,将其存储在变量中,然后在绘制时使用该变量。

您还可以将树绘制到缓冲区一次,然后将该缓冲区绘制到屏幕上。createGraphics()函数对于这种方法会派上用场。

最新更新