Я новичок в обработке и создаю эскиз, где холст размером 600px на 600 пикселей заполнен прямоугольными прямоугольниками размером 50px случайного цвета из моей палитры orange[]
. Случайное формирование блоков должно быть расположено внутри функции draw()
для правильной работы с некоторыми условностями, которые я буду использовать позже.Обработка: Индекс массива за пределами
ошибка, что я получаю ArrayIndexOutOfBoundsException: 12 на этой линии:
randomSize[varCreator] = sIncrement[int(random(0,sIncrement.length-1))];
Я не могу понять, почему эта ошибка происходит. Я посмотрел на смежные вопросы, а может быть, его просто потому, что я так ново, но я не могу понять:
int x; //x coordinate
int y; //y coordinat
int s = 50; //rect size
int wide = 600; //canvas width
int tall = 600; //canvas height
int[] sIncrement = new int[12];//{s, s*2, s*3, s*4, s*5, s*6};
//colors
int[] oranges = {
#773600, #5f3613, #552700, #9c5215, #9c5c26
};
int[] blues = {
#004848, #0c3939, #003333, #107979, #1e7979
};
int[] palette = oranges;//holds current color pallete
//random
int fillColor = palette[int(random(0, palette.length))]; //random starting fill color
int changeColor = palette[int(random(0, palette.length))]; //random new color
int[] randomSize = new int[sIncrement.length]; //array of lots of random s values to place newly color changed blocks
//setup
void setup(){
size(wide, tall);
background(255);
noStroke();
frameRate(24);
/*fills sIncrement array with incrementing s values (i.e. if s = 50 then array
contains 50, 100, 150, etc...) from 0 to canvas width for use in a conditional statement*/
for(int i = 0; i <= sIncrement.length-1; i++){
sIncrement[i] = s*i;
}
//creates multiple randomSize variables for if() x or y == randomSize[varCreator]
for(int varCreator = 0; varCreator <= (width/s)+(height/s); varCreator++){
randomSize[varCreator] = sIncrement[int(random(0,sIncrement.length-1))];
}
}
//draw
void draw(){
fill(fillColor); //selects random color from palette
//draws grid colored boxes with s size
for (y = 0; y <= height; y+= s) {
for (x = 0; x <= width; x+= s) {
if(x == sIncrement[randomSize[1]] && y == sIncrement[randomSize[3]]){
fill(changeColor); //selects random color from palette
rect(x, y, s, s);
}
else{
fill(fillColor);
// fill(palette[int(random(0, palette.length))]); //selects random color from palette
rect(x, y, s, s);
}
}
}
}
Это не похоже на Java. – Vulcan
И даже тогда ... Я не уверен, какая часть сообщения об ошибке сообщает вам, в чем проблема ... запутан. –
@OMGPonies, потому что это именно то, что они есть! – Brannon