Итак, вот быстрый способ дублировать столбцы справа. Я добавляю 90 к valueX
каждый раз, когда вы нажимаете клавишу пробела. valueX
тогда пропадет, вставьте вложенный for-l oop.
Я надеюсь, что это именно тот результат, который вам нужен! (Если нет, оставьте комментарий, и я постараюсь это исправить.)
float loc;
float sizeW;
float sizeH;
float dir;
float valueX = 0;
boolean moving = true;
void setup() {
size(1280, 720);
loc = 0;
dir = (float)height/720;
sizeW = (float)width/14.2;
sizeH = (float)height/8;
}
void draw() {
background(255);
Rectangle();
grid();
}
void Rectangle() {
fill(255, 147, 79);
stroke(0);
int steppedPos = (int)(loc/sizeH+0.5);
// rect(0, steppedPos*sizeH, sizeW, sizeH);
for (int i =0; i<90*4; i+=90) {
for(int j = 0; j <= valueX; j+= 90){
rect(0 + j, steppedPos*sizeH+i, sizeW, sizeH);
}
}
if (moving) {
loc = loc + dir;
if (loc + sizeH + 270 > height || loc < 0) {
dir = dir * -1;
loc = loc + dir;
}
}
}
void keyPressed() {
if (key == ' ') {
moving = !moving;
valueX += 90;
}
}
void grid() {
for (int i=0; i<width; i+=90) {
line(i, 0, i, height);
}
for (int j=0; j<height; j+=90) {
line(0, j, width, j);
}
}
Ваша идея с 2-мерным массивом неплохая, но проблема в том, что массивы имеют фиксированный размер. Итак, вы хотели бы использовать ArrayList для оси x и массив для оси y (пока он остается фиксированного размера). Это будет выглядеть примерно так:
ArrayList<int[]> list = new ArrayList<int[]>();
С помощью этого метода вы можете посмотреть на объектную ориентацию, просто чтобы навести порядок. (Если хотите, я могу показать вам, как ваш код будет выглядеть объектно-ориентированным)
Приветствую и удачи!