关于缩短我的p5.js代码的建议(for loop?)

时间:2017-10-10 23:18:18

标签: image for-loop p5.js

我制作的程序会在每次点击mouss时随机化并加载6个不同的图像。

function mousePressed() {
   randomNum1 = floor(random(0,6));
   randomNum2 = floor(random(0,6));
   randomNum3 = floor(random(0,6));
   randomNum4 = floor(random(0,6));
   randomNum5 = floor(random(0,6));
   randomNum6 = floor(random(0,6));

   image(dieImages[randomNum1],0,0);
   image(dieImages[randomNum2],100,0);
   image(dieImages[randomNum3],200,0);
   image(dieImages[randomNum4],300,0);
   image(dieImages[randomNum5],400,0);
   image(dieImages[randomNum6],500,0);
}

我很确定我可以在某个地方使用for循环,但我并不乐观。任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

您已经在为图像使用数组了。 dieImages数组基本上包含一堆图像变量。为什么不对你的随机数做同样的事情?

语法可能如下所示:

 randomNum[0] = floor(random(0,6));
 randomNum[1] = floor(random(0,6));
 randomNum[2] = floor(random(0,6));
 randomNum[3] = floor(random(0,6));
 randomNum[4] = floor(random(0,6));
 randomNum[5] = floor(random(0,6));

您可以缩短使用for循环:

for(var i = 0; i < randomNum.length; i++){
  randomNum[i] = floor(random(0,6));
}

然后,您的image()调用使用randomNum变量作为索引。如果随机数在我们刚刚看到的数组中,则image()行可以是:

image(dieImages[randomNum[0]],0,0);
image(dieImages[randomNum[1]],100,0);
image(dieImages[randomNum[2]],200,0);
image(dieImages[randomNum[3]],300,0);
image(dieImages[randomNum[4]],400,0);
image(dieImages[randomNum[5]],500,0);

你可以缩短到这一点:

for(var i = 0; i < randomNum.length; i++){
  image(dieImages[randomNum[i]], i * 100, 0);
}

旁注:如果您重构此代码以使用包含图像和位置的对象,而不是在相应索引中保存相关数据的两个parallel arrays,则可能会更容易。