この本では、このコードを使用してチェッカーボードを描画しています。私が抱えている唯一の問題は、個々の正方形がチェッカーボードに描かれる順序を理解することです。計算を行うと、チェッカーボードを左上から右下への斜め方向の正方形で埋めるだけです。この本には、コードがすべての正方形に対してこのループを 64 回実行すると書かれていますが、どのようにこれを 64 回実行するのかはわかりません。
たとえば、 getHeight() = 72 としましょう
平方サイズ = 9
最も内側のループを移動
double x = 0 * 9 ===> 0
double y = 0 * 9 ===> 0
GRect (0, 0, 9, 9,);
double x = 1 * 9 ===> 9
double y = 1 * 9 ===> 9
GRect (9, 9, 9, 9,);
double x = 2 * 9 ===> 18
double 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;
}