Invention1.java
/* 
 * Program to paint a blue dot in the context of the Nonrepresentational 
 * Painting world, NPW. 
 */

package npw;

import java.awt.Color;
import java.util.Scanner;
import javax.swing.*;

import painter.SPainter;
import shapes.SCircle;
import shapes.SSquare;

public class Invention1 {
    //THE SOLUTION TO THE BLUE DOT PROBLEM
    private void paintTheImage() {
        int numberOfSquares = getNumber("Number of concentric squares and circles");
        SPainter painter = new SPainter("Invention1", 800, 800);
        int squareSide = 700;
        SSquare square = new SSquare(squareSide);
        int sFactor = squareSide/(numberOfSquares+1);
        paintOneSquare(square,painter,numberOfSquares,sFactor);

    }
        private void paintOneSquare(SSquare square, SPainter painter,int numberOfSquares,int sFactor) {
        int i = 0;
        while (i<=numberOfSquares){
            if(i%2==0){
                painter.tl(45);
                painter.setBrushWidth(5);
                painter.setColor(Color.RED);
                painter.draw(square);
                SCircle circle = square.inscribingCircle();
                painter.setColor(Color.BLUE);
                painter.draw(circle);
                square.shrink(sFactor);

            }else{
                painter.tl(45);
                painter.setBrushWidth(5);
                painter.setColor(Color.YELLOW);
                painter.draw(square);
                SCircle circle = square.inscribingCircle();
                painter.setColor(Color.GREEN);
                painter.draw(circle);
                square.shrink(sFactor);
            }
            i=i+1;
        }
    }
    private int getNumber(String s) {
        String numberOfSquares = JOptionPane.showInputDialog(null,s+"?");
        Scanner scanner = new Scanner(numberOfSquares);
        return scanner.nextInt();
    }

    // REQUIRED INFRASTRUCTURE

    public Invention1() {
        paintTheImage();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new Invention1();
            }
        });
    }


}