本书使用此代码绘制棋盘格。我遇到的唯一问题是了解棋盘上各个方块的绘制顺序。当我进行计算时,它只会用从左上角到右下角的对角线方向的正方形填充棋盘。这本书说代码对每个正方形执行此循环 64 次,但我不确定它是如何执行 64 次的。
例如让我们说 getHeight() = 72
平方大小 = 9
在最里面的循环中移动
double x = 0 * 9 ===> 0
double 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);
ETC...
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;
}