我正在从 Roberts 的 The Art & Science of Java (斯坦福的 CS106a 文本)中学习 Java。我使用 NetBeans 作为我的 IDE。
第 4 章,练习 14 要求您扩展前面介绍的棋盘程序。具体来说,它要求您将棋盘居中并绘制一组与游戏初始状态相对应的红白格子。
我已经按照要求完成了,但是有两个问题-
该板未完全居中在窗口中。它比右侧更靠近窗口的左侧。我不知道如何更集中它。我这样做对吗?NetBeans 中是否有我可以/应该更改的设置?
跳棋应该占据他们所坐的大部分瓷砖。我将棋子的大小指定为取决于瓷砖的大小,以便设置简单且相称。有没有更好的方法来使跳棋更大?
import acm.graphics.*; import acm.program.*; import java.awt.*; 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) + (getWidth() / N_COLUMNS)); //centers square?? double y = (i * sqSize); GRect sq = new GRect( x, y, sqSize, sqSize ); sq.setFilled((i + j) % 2 != 0); sq.setFillColor(Color.GRAY); add(sq); double circleCoord = (sqSize * .33); double xx = ((j * sqSize) + (getWidth() / N_COLUMNS) + circleCoord); double yy = ((i * sqSize) + circleCoord); if((i + j) % 2 != 0 && i < 3 ){ GOval red = new GOval( xx, yy, circleCoord, circleCoord); red.setFilled(true); red.setFillColor(Color.RED); add(red); } else if((i + j) % 2 != 0 && i > 4 ){ GOval black = new GOval( xx, yy, circleCoord, circleCoord); black.setFilled(true); black.setFillColor(Color.BLACK); add(black); } } } } private static final int N_ROWS = 8; private static final int N_COLUMNS = 8; }