2015-02-09 131 views
0

请帮助这个程序。对于可汗学院来说,使用阵列,循环和条件来下雨是一项挑战。我应该:Javascript:合并随机()开始

  1. 向阵列添加更多滴。
  2. 使它能够在落到最下方时使用条件码重新开始回落。
  3. 制作一组颜色,以便每一滴都是不同的颜色。
  4. 使其他东西下雨,如雪花(使用更多的形状命令)或头像(使用图像命令)。
  5. 使其成为当用户单击时,一个新的drop被添加到数组中。
  6. 在程序的开始处使用for循环和random()函数初始化数组。

我已经做了#1,#2,#5,我可以做#3 & 4 ...但我不能为我的生活弄清楚如何做到#6。我知道它与一个随机(0,400)命令有关,但我不确定如何使其工作。

下面是代码:

// need random x value 
// need random start times 

// position of the rain at top 
var xPositions = [1, 50, 100, 150, 200, 250, 300, 350, 399]; 
var yPositions = [0, 0, 0, 0, 0, 0, 0, 0, 0]; 

// attempt at defining a variable for random start 
// don't know what to do with it after this 
var raindrops = [random(0, 400)]; 

// rain falling from top to bottom at specific intervals 
var draw = function() { 
    background(113, 218, 237); 

    for (var i = 0; i < xPositions.length; i++) { 
     noStroke(); 
     fill(21, 143, 173); 
     ellipse(xPositions[i], yPositions[i], 10, 10); 
     if (yPositions[i] < 390) { 
    yPositions[i] += 5; //makes rain fall down 
    } else { 
     yPositions[i] = 0; 
    }   
} 

for (var j = 0; j < xPositions.length; j++) { 
      noStroke(); 
      fill(21, 143, 173); 
      ellipse(xPositions[j] + 25, yPositions[j]-50, 10, 10); 
     } 

    for (var k = 0; k < xPositions.length; k++) { 
      noStroke(); 
      fill(21, 143, 173); 
      ellipse(xPositions[k], yPositions[k]-100, 10, 10); 
     } 
    }; 


// click to add more raindrops 
var mouseClicked = function() { 
    xPositions.push(mouseX); 
    yPositions.push(mouseY); 
}; 

我很欣赏你的输入。

回答

0

我想通了:

// click to add more rain 

// position of the rain at top 
var xPositions = [1, 50, 100, 150, 200, 250, 300, 350, 399]; 
var yPositions = [0, 0, 0, 0, 0, 0, 0, 0, 0]; 
var rainspeed = [1, 4, 2, 6, 3, 8, 5, 3, 4]; 

// rain falling from top to bottom at defined intervals 
var draw = function() { 
    background(113, 218, 237); 

    for (var i = 0; i < xPositions.length; i++) { 
     noStroke(); 
     fill(60, 163, 232); 
     ellipse(xPositions[i], yPositions[i], 6, 12); 
    if (yPositions[i] < 395) { 
     yPositions[i] += rainspeed[i]; //makes rain fall down 
    } else { 
     yPositions[i] = 0; //takes rain back to top 
    } 
    } 

}; 


// click to add more raindrops 
var mouseClicked = function() { 
    xPositions.push(mouseX); 
    yPositions.push(mouseY); 
    rainspeed.push(random(2,8)); 
}; 
0

将此功能添加到您的代码并更新您的随机呼叫。

function randomInt(min, max) { 
    return Math.floor(Math.random() * (max - min + 1) + min); 
} 

-

var raindrops = randomInt(0, 400); 

或(请注意,似乎没有足够的信息在你的问题精确回答这个问题,但这里有一个循环添加随机值到一个数组):

var minRain = 1; 
var maxRain = 400; 
var rainLen = 100; 
var rain = []; 
for (var i = 0; i < rainLen; i++) { 
    rain.push(randomInt(minRain, maxRain)); 
} 
function randomInt(min, max) { 
    return Math.floor(Math.random() * (max - min + 1) + min); 
}