0
我正在学习Java的艺术& Java的科学由罗伯茨(斯坦福的CS106a文本)。我使用NetBeans作为我的IDE。CS106a棋盘优化
第4章练习14要求您扩展前面介绍的棋盘程序。具体来说,它会要求您将棋盘居中并绘制一组对应于游戏初始状态的红色检查。
的要求我已经完成尽可能多的,但有两个issues-
董事会并不完全在窗口中居中。它比右侧更靠近窗户的左侧。我不知道如何更加集中它。我做对了吗? 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; }
谢谢,这个解决方案是有道理的,并帮助很多! – todon2 2013-02-27 01:53:06