需要帮助来理解绘制棋盘的代码

时间:2012-10-20 00:44:56

标签: java

本书使用此代码绘制棋盘格。我唯一的问题是理解在棋盘上绘制单个正方形的顺序。当我进行计算时,它只在棋​​盘上用从左上角到右下角的对角线方向填充方块。这本书说代码为每个方块做了64次这个循环,但我不确定它是如何做到这64次。

例如,假设getHeight()= 72

sqSize = 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; 
     }

1 个答案:

答案 0 :(得分:0)

你有两个循环 - 第二个循环遍历每个值0-7,并且总共循环8次,因为这是第一个循环运行的次数。在您的解释中,您正在同时递增两个值,就好像每次只有一个循环使两个值递增一样。

在循环中打印 i j 的值可能会有所帮助。

(i,j)

(0, 1) (0, 2) (0, 3) ...
(1, 1) (1, 2) (1, 3) ...
...