Dots.java
/* 
/ This program is to be demonstrated in the attempt to 
/ paint a dots sequence in the NPW (Nonrepresentational Painting World) 
 */

package npw;

import java.awt.Color;
import javax.swing.SwingUtilities;
import painter.SPainter;
import shapes.SCircle;

public class Dots {

    // THE SOLUTION TO THE DOTS PROBLEM

    private void paintTheImage() {
        SPainter painter = new SPainter("Dots",600,600);

        SCircle dot = new SCircle(100);
        SCircle dot2 = new SCircle(80);
        SCircle dot4 = new SCircle(70);
        SCircle dot1 = new SCircle(50);
        SCircle dot3 = new SCircle(50);
        paintBlueCircle(painter, dot3);
        paintsecondredcircle(painter, dot4);
        paintRedCircle(painter, dot2);
        paintGreenCircles(painter, dot1);
        paintyellowCircle(painter, dot);
    }

    private void paintyellowCircle(SPainter painter, SCircle dot) {
        painter.setColor(Color.YELLOW);
        painter.moveToCenter();
        painter.faceNorth();
        painter.mfd(0);
        painter.mlt(0);
        painter.paint(dot);
    }

    private void paintsecondredcircle(SPainter painter, SCircle dot4) {
        painter.setColor(Color.RED);
        painter.moveToCenter();
        painter.faceNorth();
        painter.mfd(200);
        painter.mlt(0);
        painter.paint(dot4);
    }

    // REQUIRED INFRASTRUCTURE

    public Dots() {
        paintTheImage();
    }

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

    private void paintBlueCircle(SPainter painter, SCircle dot3) {
        painter.setColor(Color.BLUE);
        painter.moveToCenter();
        painter.faceNorth();
        painter.mfd(200);
        painter.mlt(200);
        painter.paint(dot3);
        painter.moveToCenter();
        painter.faceNorth();
        painter.mfd(200);
        painter.mrt(200);
        painter.paint(dot3);
        painter.moveToCenter();
        painter.faceNorth();
        painter.mbk(200);
        painter.mrt(200);
        painter.paint(dot3);
        painter.moveToCenter();
        painter.faceNorth();
        painter.mbk(200);
        painter.mlt(200);
        painter.paint(dot3);
    }

    private void paintRedCircle(SPainter painter, SCircle dot2) {
        painter.setColor(Color.RED);
        painter.moveToCenter();
        painter.faceNorth();
        painter.mbk(200);
        painter.mrt(0);
        painter.paint(dot2);

    }

    private void paintGreenCircles(SPainter painter, SCircle dot1) {
        painter.setColor(Color.GREEN);
        painter.moveToCenter();
        painter.faceNorth();
        painter.mfd(0);
        painter.mrt(200);
        painter.paint(dot1);
        painter.moveToCenter();
        painter.faceNorth();
        painter.mbk(0);
        painter.mlt(200);
        painter.paint(dot1);
    }

}