0

このプログラムを手伝ってください。配列、ループ、および条件を使用して雨を降らせるのは、Khan Academy の課題です。私はすることになっています:

  1. アレイにドロップを追加します。
  2. 条件を使用して、ドロップが最下部に到達したら、ドロップが最上部に戻るようにします。
  3. すべてのドロップが異なる色になるように、色の配列を作成します。
  4. 雪片 (より多くの形状コマンドを使用) やアバター (画像コマンドを使用) など、他のものに雨を降らせます。
  5. ユーザーがクリックすると、新しいドロップが配列に追加されるようにします。
  6. プログラムの最初で、for ループと random() 関数を使用して配列を初期化します。

私は#1、#2、および#5を実行し、#3と4を実行できます...しかし、#6の実行方法を一生理解することはできません. random(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);
};

ご意見をお待ちしております。

4

2 に答える 2

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));
};
于 2015-02-15T19:02:28.963 に答える