我有一个640x640网格,可以映射到8x8 2D数组。我需要能够在用户单击的位置绘制一个椭圆形,并且我试图找出一个循环来执行它而不是键入多个if语句。
例如,我可以为电路板上的每个方块写这个,它将绘制所需的形状而没有问题。
oldx = event.getX();
oldy = event.getY();
if(oldx<=80&&oldy<=80){
board[0][0]=1;
repaint();
}
我正在尝试制作一个循环,这是我到目前为止所做的,虽然不是很好。它打印在不受欢迎的位置。我认为我在这里的方式是它只打印在可被80整除的位置。我需要将x和y坐标输入到2D数组中。
int x1 = oldx/80;
int y1 = oldy/80;
for(int r=0; r<8; r++){
for(int c=0; c<8; c++){
board[x1][y1] = 1;
repaint();
}
}
}
感谢任何帮助。
答案 0 :(得分:2)
你似乎正走在正确的道路上。但是,您在循环示例中没有条件。您需要在双if()
循环中添加for
语句,以检查所选的X和Y是否与您循环的当前正方形匹配。
答案 1 :(得分:2)
这将使它适合你。
boolean found = false;
while(found!=true){
for(int r=0; r<8; r++){
for(int c=0; c<8; c++){
if(y1==c&&x1==r){
board[r][c] = 1;
found = true;
repaint();
}
}
}
}
}