我在processing3中编写了一个小程序,可以将背景更改为存储在数组中的特定颜色rgb代码。r、g和b的每个值都存储在一个单独的数组中。
改变鼠标水平位置会改变背景的颜色。
然而,这个解决方案代码是相当重复的,并且有很多if/else语句。我想使用for()循环来简化代码并减少重复性。但是,我很难在for()循环中包含mouse position变量。是否可以使用for()循环简化此代码,并以某种方式Map鼠标位置以访问数组项?这是我现在的代码:
int[] r = {255,249,240,233,227};
int[] g = {115,138,157,173,187};
int[] b = {0,18,63,94,120};
void setup() {
size(500, 500);
}
void draw() {
int x = mouseX;
if(x >= 0 && x <=100) {
background(r[0], g[0], b[0]);
}
else if (x >= 101 && x <= 200){
background(r[1], g[1], b[1]);
}
else if (x >= 201 && x <= 300){
background(r[2], g[2], b[2]);
}
else if (x >= 301 && x <= 400){
background(r[3], g[3], b[3]);
}
else {
background(r[4], g[4], b[4]);
}
}
我希望将代码简化为以下内容:
int[] r = {255,249,240,233,227};
int[] g = {115,138,157,173,187};
int[] b = {0,18,63,94,120};
void setup() {
size(500, 500);
}
void draw() {
for(int i=0; i<r.length; i++) {
background(r[i],g[i],b[i]);
}
}
但是,我不知道如何改变这个代码,背景颜色会随着鼠标水平位置的变化而变化,如第一个示例所示。
感谢您的回复和帮助!
1条答案
按热度按时间0dxa2lsx1#
如果不同值之间的步长为100,则可以将输入x值除以100。整数除法将处理其余部分。
if语句只是为了确保它保持在数组的范围内。