0

この本では、このコードを使用してチェッカーボードを描画しています。私が抱えている唯一の問題は、個々の正方形がチェッカーボードに描かれる順序を理解することです。計算を行うと、チェッカーボードを左上から右下への斜め方向の正方形で埋めるだけです。この本には、コードがすべての正方形に対してこのループを 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; 
     }
4

1 に答える 1

0

2 つのループがあります。2 番目のループは各値 0 ~ 7 を循環し、最初のループが実行される回数は合計 8 回です。説明では、毎回両方の値をインクリメントするループが 1 つしかないかのように、両方の値を同時にインクリメントしているように見えます。

ループ内でijの値を出力すると役立つ場合があります。

(i,j)

(0, 1) (0, 2) (0, 3) ...
(1, 1) (1, 2) (1, 3) ...
...
于 2012-10-20T00:55:52.180 に答える