Stella.java
package npw;
import painter.SPainter;
import shapes.SSquare;

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

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

    public Stella() {
        paintTheImage();
    }

    private void paintTheImage() {
        int canvasSide = 800;
        int numOfSquares = getNumber("ENter The number of squares");
        SPainter painter = new SPainter("Stella", canvasSide, canvasSide);
        int squareWidth = (canvasSide - 100);
        int i = 0;
        double sizeChange = ((canvasSide - 100) / numOfSquares);
        SSquare square = new SSquare(squareWidth);
        Color Color1 = randomColor();
        Color Color2 = randomColor();
        paintSquares(i, numOfSquares, painter, square, sizeChange, Color1, Color2);
    }

    private void paintSquares(int i, int nrOfSquares, SPainter painter, SSquare square, double sizeChange, Color randColor1, Color randColor2) {
        while (i < nrOfSquares) {
            //Alternate between two randomly colored squares, and shrink after each iteration.
            if (i % 2 != 0) {
                painter.setColor(randColor1);
                painter.paint(square);
                square.shrink(sizeChange);
            } else {
                painter.setColor(randColor2);
                painter.paint(square);
                square.shrink(sizeChange);
            }
            i = i + 1;
        }
    }

    private Color randomColor() {
        Random randColor = new Random();
        int A = randColor.nextInt(250);
        int B = randColor.nextInt(250);
        int C = randColor.nextInt(250);
        return new Color(A, B, C);
    }

    private static int getNumber(String prompt) {
        String nss = JOptionPane.showInputDialog(null, prompt + ".");
        Scanner scanner = new Scanner(nss);
        return scanner.nextInt();
    }
}