簡體   English   中英

需要幫助來理解繪制棋盤的代碼

[英]Need assistance for understanding code for drawing a checkerboard

本書使用此代碼繪制棋盤格。 我唯一的問題是了解棋盤格上各個正方形的繪制順序。 當我進行計算時,它只會在棋盤上從左上角到右下角的對角線方向填充正方形。 這本書說代碼對每個方塊執行此循環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; 
     }

您有兩個循環-第二個循環在每個值0-7之間循環,總共執行8次,因為這是第一個循環運行的次數。 在您的解釋中,您似乎同時增加了兩個值,好像每次循環中只有一個循環使兩個值都增加一樣。

在循環內打印ij的值可能會有所幫助。

(i,j)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM