В ваших намерениях есть некоторая неопределенность, но я думаю, что понимаю, для чего вы собираетесь. Давайте сначала посмотрим на ваш код без изменений
void draw()
{
// if statement used to draw ten squares
if (numberOfSquares < 10)
{
rect(x, y, 20, 20);
x = x + 40;
y = y + 40;
numberOfSquares = numberOfSquares + 1;
// then, if ten squares exist, and only then
// fill each square with a random color
if (numberOfSquares == 10) {
fill (random(255), random(255), random(255));
}
}
}
Итак, давайте рассмотрим, что Draw
работает, когда у вас есть numberOfSquares = 0
. Сначала он проверит numberOfSquares < 10
, что верно. Так что это создаст один квадрат. Затем он проверит, если numberOfSquares == 10
. Это будет неверно, поскольку у нас сейчас только 1 клетка, и мы не будем бежать. Мы должны были бы позвонить draw()
10 раз, прежде чем if (numberOfSquares == 10)
оценит значение true.
Теперь, ссылаясь на ваш вопрос в комментарии, вы говорите how might I implement something akin to "do thing, then do next thing for each time that next thing needs to be done"?
Это концепция цикла, более конкретно, это оператор if
, за которым следует loop
. Немного неясно, что вы хотите этим повторить, но в качестве примера давайте предположим, что вы хотите «если у меня меньше 10 квадратов, производите квадраты, пока у меня их не будет 10». Вы можете использовать while loop
или for loop
для этого, я лично предпочитаю петли.
void draw()
{
// for loop used to draw 10 squares
for(int i = numberOfSquares; numberOfSquares < 10; i = i + 1)
{
rect(x, y, 20, 20);
x = x + 40;
y = y + 40;
numberOfSquares = numberOfSquares + 1;
}
if (numberOfSquares == 10)
{
fill (random(255), random(255), random(255));
}
}
Теперь, когда вызывается розыгрыш, он будет производить квадраты, пока у вас не будет 10 каждый раз. В этом случае внутренний if (numberOfSquares == 10)
является избыточным, потому что мы просто гарантировали, что 10 будет существовать независимо от того, когда мы достигнем этого оператора if, поэтому мы можем удалить его.
void draw()
{
// for loop used to draw 10 squares
for(int i = numberOfSquares; numberOfSquares < 10; i = i + 1)
{
rect(x, y, 20, 20);
x = x + 40;
y = y + 40;
numberOfSquares = numberOfSquares + 1;
}
// fill
fill (random(255), random(255), random(255));
}