Roberts の The Art & Science of Java (Stanford の CS106a テキスト) から Java を学んでいます。IDE として NetBeans を使用しています。
第 4 章の演習 14 では、以前に紹介したチェッカーボード プログラムを拡張するよう求められます。具体的には、チェッカーボードを中央に配置し、ゲームの初期状態に対応する赤と白のチェックのセットを描くように求めます。
要求されたとおりに達成しましたが、2 つの問題があります。
ボードがウィンドウの中央に完全に配置されていません。ウィンドウの右側よりも左側に近いです。それをもっと中心に置く方法がわかりません。私はこれを正しく行っていますか?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; }