Dots.java
1    package npw;
2    
3    import painter.SPainter;
4    import shapes.SCircle;
5    import shapes.SSquare;
6    
7    import javax.swing.*;
8    import java.awt.*;
9    
10   public class Dots {
11       //     THE SOLUTION TO THE BLUE DOT PROBLEM
12   
13       public void paintCircles(SPainter painter, SCircle dot, SCircle dot2, SCircle dot3, SCircle dot4)
14       {
15           // center dot
16           painter.moveToCenter();
17           painter.setColor(Color.cyan);
18           painter.paint(dot);
19   
20           // bottom right (above blue circle)
21   
22           painter.tr();
23           painter.mfd(100);
24           painter.tr();
25           painter.mfd(100);
26           painter.setColor(Color.darkGray);
27           painter.paint(dot2);
28   
29           // bottom right circle
30   
31           painter.tl();
32           painter.mfd(100);
33           painter.tr();
34           painter.mfd(75);
35           painter.tr();
36           painter.mfd(20);
37           painter.setColor(Color.blue);
38           painter.paint(dot3);
39   
40           // bottom left circle
41   
42           painter.mfd(370);
43           painter.setColor(Color.blue);
44           painter.paint(dot3);
45   
46           // turn right (facing up) abover bottom left circle
47           painter.tr();
48           painter.mfd(75);
49           painter.tr();
50           painter.mfd(75);
51           painter.setColor(Color.darkGray);
52           painter.paint(dot2);
53   
54           // return to center
55           painter.moveToCenter();
56   
57           // top left circle
58           painter.tl();
59           painter.mfd(200);
60           painter.tl();
61           painter.mfd(200);
62           painter.setColor(Color.black);
63           painter.paint(dot4);
64   
65           // top right (outer circle)
66           painter.tr();
67           painter.tr();
68           painter.mfd(400);
69           painter.setColor(Color.black);
70           painter.paint(dot4);
71   
72           // top right (lower dot)
73           painter.tr();
74           painter.mfd(70);
75           painter.setColor(Color.black);
76           painter.paint(dot3);
77   
78           // top right (lower dot)
79           painter.tr();
80           painter.mfd(400);
81           painter.setColor(Color.black);
82           painter.paint(dot3);
83   
84   
85   
86   
87       }
88   
89       private void paintTheImage() {
90   
91           SPainter painter = new SPainter("Dots",600,600);
92   
93           SCircle dot = new SCircle(75);
94           SCircle dot2 = new SCircle(50);
95           SCircle dot3 = new SCircle(35);
96           SCircle dot4 = new SCircle(10);
97   
98           SSquare square = new SSquare(200);
99           paintCircles(painter, dot, dot2, dot3, dot4);
100      }
101  
102      // REQUIRED INFRASTRUCTURE
103  
104      public Dots() {
105          paintTheImage();
106      }
107  
108      public static void main(String[] args) {
109          SwingUtilities.invokeLater(new Runnable() {
110              public void run() {
111                  new Dots();
112              }
113          });
114      }
115  }