Посмотрите на свой Pixel#draw()
функции:
this.draw = function() {
rect(this.x, this.y, l, l);
fill(0);
stroke(20);
if (this.on)
fill(255);
}
Прочитайте этот код построчно и действительно думать о том, что именно он делает. Пройдите через него с листом бумаги и карандашом, чтобы точно понять, что происходит.
Обратите внимание, что вы вызываете функцию rect()
сначала, а затем вы настраиваете заливку и обводку.
Это приведет к тому, что каждый квадрат будет иметь цвет предыдущий. Так что это не значит, что ваш первый Pixel
находится во втором квадрате, а второй Pixel
рисует сам по цвету первого Pixel
. То же самое верно для первого Pixel
рисунка, основанного на цвете последних Pixel
.
Чтобы устранить проблему, просто установите ход и заполните до, вы вызываете функцию rect()
.
Side Примечание: Вы также, вероятно, хотите, чтобы войти в привычку использовать { }
фигурные скобки для каждого if
заявления, даже однострочечники, как это:
if(this.one){
fill(255);
}
Это не вызывает никаких проблем в коде но это хорошая привычка.
Возможно использование 'new Pixel (j, i);' вместо 'new Pixel (i, j);'? –
нет, что приведет к повороту сетки на 90º – lsaadev