这本书使用这个代码来画一个棋盘。我唯一的问题是理解棋盘上各个方块的绘制顺序。当我做我的计算时,它只在对角方向上从左上角到右下角用方块填充棋盘。书中说代码对每个方块循环64次,但我不确定它是如何做到64次的。
例如,假设getHeight() = 72
sqSize =9
在最内层循环中移动
双x=0*9 ===> 0
双y=0*9 ===> 0
GRect (0,0,9,9,);
双x=1*9 ===> 9
双y=1*9 ===> 9
GRect (9,9,9,9,);
双x=2*9 ===> 18
双y=2*9 ===>18
GRect (18,18,9,9);
等等。
import acm.program.*;
import acm.graphics.*;
public class Checkerboard extends GraphicsProgram {
public void run(){
double sqSize = (double) getHeight() / N_ROWS;
for ( int i = 0; i < N_ROWS; i++ ){
for( int j = 0; j < N_COLUMNS; j++) {
double x = j * sqSize;
double y = i * sqSize;
GRect sq = new GRect(x, y, sqSize, sqSize);
sq.setFilled(( i + J ) % 2 !=0);
}
}
}
private static final int N_ROWS = 8;
private static final int N_COLUMNS = 8;
}发布于 2012-10-20 08:55:52
您有两个循环-第二个循环遍历每个值0-7,总共循环8次,因为这是第一个循环运行的次数。在您的解释中,您似乎在同时递增这两个值,就好像只有一个循环每次递增两个值一样。
在循环中打印i和j的值可能会有所帮助。
(i,j)
(0, 1) (0, 2) (0, 3) ...
(1, 1) (1, 2) (1, 3) ...
...https://stackoverflow.com/questions/12984237
复制相似问题