package npw; import painter.SPainter; import shapes.SCircle; import shapes.SSquare; import javax.swing.*; import java.awt.*; import java.util.Random; import java.util.Scanner; public class Invention1{ private void paintTheImage() { int nrOfRows = 10; int nrOfColumns = 10; int sizeOfSquare =40; int height = nrOfRows * sizeOfSquare; int width = nrOfColumns * sizeOfSquare; SPainter miro = new SPainter("Invention1",width+50,height+50); miro.setBrushWidth(4); SSquare square = new SSquare(sizeOfSquare); SCircle circle=new SCircle(sizeOfSquare/2); paintRectangle(miro,square,circle,nrOfRows,nrOfColumns); } private static void paintRectangle(SPainter miro, SSquare square,SCircle circle, int nrOfRows, int nrOfColumns) { // Position the painter to paint the rectangle of squares. miro.mlt(((nrOfColumns-1)/2.0) * square.side()); miro.mbk(((nrOfRows-1)/2.0) * square.side()); // Paint the rectangle of squares. int i = 1; while ( i <= nrOfRows) { if (i % 2 == 0){ paintOneRow(miro, nrOfColumns, square, circle); }else{paintAnotherRow(miro,nrOfColumns,square,circle);} miro.mfd(square.side()); i = i + 1; } // Make the method invariant with respect to painter position. miro.mrt(((nrOfColumns-1)/2.0) * square.side()); miro.mfd(((nrOfRows-1)/2.0) * square.side()); } private static void paintOneRow(SPainter miro, int nrOfColumns, SSquare square,SCircle circle) { int i = 1; while ( i <= nrOfColumns ) { if (i%2 == 0){ paintOneSquare(miro,square); }else{ paintOne(miro,circle); } miro.mrt(square.side()); i = i + 1; } miro.mlt(nrOfColumns*square.side()); } private static void paintAnotherRow(SPainter miro, int nrOfColumns, SSquare square,SCircle circle) { int i = 1; while ( i <= nrOfColumns ) { if (i%2 == 0){ paintAnotherSquare(miro,circle); }else{ paintAnother(miro,square); } miro.mrt(square.side()); i = i + 1; } miro.mlt(nrOfColumns*square.side()); } private static void paintOneSquare(SPainter miro, SSquare square) { miro.setColor(Color.RED); miro.paint(square); miro.setColor(Color.BLACK); miro.draw(square); } private static void paintOne(SPainter miro,SCircle circle){ miro.setColor(Color.GREEN); miro.paint(circle); miro.setColor(Color.BLACK); miro.draw(circle); } private static void paintAnotherSquare(SPainter miro, SCircle circle) { miro.setColor(Color.GREEN); miro.paint(circle); miro.setColor(Color.BLACK); miro.draw(circle); } private static void paintAnother(SPainter miro,SSquare square){ miro.setColor(Color.RED); miro.paint(square); miro.setColor(Color.BLACK); miro.draw(square); } public Invention1(){ paintTheImage(); } public static void main(String[] args){ SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new Invention1(); } }); } }