我是新来的。我正在上可汗学院的编程课程(主要是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。感谢您的帮助和建议!!
发布于 2017-12-16 01:10:37
下面这几行:
var dropX = [40];
var dropY = [0];
var snowX = [40];
所有创建的数组大小均为1。dropX[0]
和snowX[0]
的值均为40
,dropY[0]
的值为0
。
此外,你的循环是从0
到100
,而不是40
;
这将正确初始化您的数组:
var dropX = [];
var dropY = [];
var snowX = [];
var i;
for(i = 0; i < 100; i++) {
dropX[i] = 40;
dropY[i] = 0;
snowX[i] = 40;
}
https://stackoverflow.com/questions/47841589
复制