package npw; import java.awt.*; import java.util.Random; import java.util.Scanner; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import painter.SPainter; import shapes.SCircle; public class Number4 { private void paintTheImage() { //get the input information from the user. int nrOfRows = getNumber("rows"); int nrOfColumns = getNumber("columns"); int diameterOfCircle = getNumber("diameter of circle"); String color = getColor("color of circle"); //establish the painter int height = nrOfRows * diameterOfCircle; int width = nrOfColumns * diameterOfCircle; SPainter miro = new SPainter("Number 4", width + 50, height + 50); miro.setBrushWidth(4); SCircle circle = new SCircle(diameterOfCircle / 2); //paint the rectangles paintRectangle(miro, circle, nrOfRows, nrOfColumns, color); } private static int getNumber(String prompt){ String nss = JOptionPane.showInputDialog(null, prompt + "?"); Scanner scanner = new Scanner(nss); return scanner.nextInt(); } private String getColor(String prompt) { String color = JOptionPane.showInputDialog(null, prompt + "?"); Scanner scan = new Scanner(color); return scan.next(); } private static void paintRectangle(SPainter miro, SCircle circle, int nrOfRows, int nrOfColumns, String color){ //position the painter to paint the rectangle of squares. miro.mlt(((nrOfColumns - 1) / 2.0) * circle.diameter()); miro.mbk(((nrOfRows - 1) / 2.0) * circle.diameter()); //paint the rectangle of squares int i = 1; while ( i <= nrOfRows ){ paintOneRow(miro, nrOfColumns, circle, color); miro.mfd(circle.diameter()); i = i + 1; } //make the method invariant with respect to painter position miro.mrt(((nrOfColumns - 1) / 2.0) * circle.diameter()); miro.mfd(((nrOfRows - 1 ) / 2.0) * circle.diameter()); } private static void paintOneRow(SPainter miro, int nrOfColumns, SCircle circle, String color){ int i = 1; while( i <= nrOfColumns){ paintOneCircle(miro, circle, color); miro.mrt(circle.diameter()); i = i +1; } miro.mlt(nrOfColumns * circle.diameter()); } private static void paintOneCircle(SPainter miro, SCircle circle, String color) { circle.s2(); if (color.equalsIgnoreCase("blue")) { miro.setColor(Color.BLUE); miro.paint(circle); } else if (color.equalsIgnoreCase("red")) { miro.setColor(Color.RED); miro.paint(circle); } else if (color.equalsIgnoreCase("green")) { miro.setColor(Color.GREEN); miro.paint(circle); } else { miro.setColor(Color.BLACK); miro.paint(circle); } circle.x2(); } private static Color randomColor(){ Random rgen = new Random(); int r = rgen.nextInt(256); int g = rgen.nextInt(256); int b = rgen.nextInt(256); return new Color (r, b ,g); } public Number4(){ paintTheImage(); } public static void main(String[] args){ SwingUtilities.invokeLater(new Runnable(){ @Override public void run() { new npw.Number4(); } }); } }