你好我试图在一个二维数组上跟踪一个鼠标,在每次卖出时我得到一个正方形我想要做的是当我的鼠标过度某些方格使其变红时,但是当我把鼠标放得过多的时候素描其中一堆是红色的任何想法如何解决?这是代码:对不起我的英语。
int[][] back =new int[3][3];
int pad = 10, bs=100, len=pad*(back.length+1)+bs*back.length;
void setup(){
size(500,500);
noStroke();
}
void draw(){
background(255);
rectt(0,0,width,height,color(100));
for(int row=0;row<back.length;row++)
for(int coll=0;coll<back[row].length;coll++){
float x = pad+(pad+bs)*coll;
float y = pad+(pad+bs)*row;
rectt(x,y,bs,bs,color(150));
if(mouseX > x && mouseY<y){
rectt(x,y,bs,bs,color(255,0,0));
}
}
}
void rectt(float x, float y, float w, float h, color c){
fill(c);
rect(x,y,w,h);
}
答案 0 :(得分:1)
看看这行代码:
if(mouseX > x && mouseY<y){
rectt(x,y,bs,bs,color(255,0,0));
}
如果要做声明,你到底想要什么?请绘制一些示例网格,并为一堆不同的点做if语句。
希望这将证明你的逻辑在这里没有意义。您正在检查是否mouseX > x
,这意味着该点位于单元格的右侧。到目前为止这是有道理的。但是你还要检查是否mouseY < y
,这意味着该点位于单元格之上。这没有意义!您要为细胞右侧和上方的任何细胞着色。
相反,您需要检查鼠标位置内部单元格。这通常是4次检查:
您可以通过将单元格宽度和高度添加到x
和y
位置来获取单元格的右下边缘。