1

我在这里有点新。我正在学习可汗学院的编程课程(主要是 javascript),但我有点卡在一个项目上。这是一个名为 Make it rain 的挑战,你应该在其中制作落在画布上的雨滴,然后在顶部重置。使用数组,我设法让水滴在随机位置生成并穿过画布,但由于使用数组,我无法让它们从顶部重新启动。对不起,很长的文字;这是我的代码:

var dropX = [40];
var dropY = [0];
var snowX = [40];
var speed = 1.5;
var ex = 0 ;
var i = 0;
var fall = dropY[i];
noStroke(); 


var rain = function (){ 

 var fall = dropY[i];    
 var ok = dropX.length;     
for(var i = 0; i<100; i++) {

    if (fall<2100){
    background(192, 224, 237);
    fill(23, 123, 143);
    ellipse(dropX[i],dropY[i],5,5);
    fill(224, 213, 213);
    rect(snowX[i],dropY[i],5,5);
    dropY[i]+=speed;
    dropX.push(random(0,400)); 
    dropY.push(random(-1650,0)); 
    snowX.push(random(0,400));
}

}
for (i = 0;i<100; i++)    {
    i++;
    fill(45, 136, 189);
    ellipse(dropX[i],dropY[i],5,5);
    fill(255, 255, 255);
    rect(snowX[i],dropY[i],5,5);
}};

draw = function() {
rain();


};

https://www.khanacademy.org/computer-programming/spin-off-of-project-make-it-rain/5960057721651200

据我所知,可汗学院代码编辑器使用 processing.js。感谢您的任何帮助或提示!

4

1 回答 1

0

这些行:

var dropX = [40];
var dropY = [0];
var snowX = [40];

都创建大小为 1. 的数组,dropX[0]并且snowX[0]都具有40dropY[0]的值0

除了你的循环是从0to100和 not to 40;

这将正确初始化您的数组:

var dropX = [];
var dropY = [];
var snowX = [];
var i;

for(i = 0; i < 100; i++) {
  dropX[i] = 40;
  dropY[i] = 0;
  snowX[i] = 40;
}

于 2017-12-16T01:10:36.570 回答