KanizsaSquare.java
1    /* 
2     * Program that completes the Kanizsa Square Challenge 
3     */
4    
5    package npw;
6    
7    // Imports
8    import java.awt.Color;
9    import javax.swing.SwingUtilities;
10   import painter.SPainter;
11   import shapes.SCircle;
12   import shapes.SSquare;
13   
14   public class KanizsaSquare {
15   
16       // Paints the image //
17       private void paintTheImage(){
18   
19           // Creates painter and canvas
20           SPainter painter = new SPainter("Kanizsa Square",400,400);
21   
22           // Creates circle
23           SCircle dot = new SCircle(75);
24   
25           // Function calls to paint circles
26           paintBlueCircle(painter, dot);
27           paintRedCircle(painter, dot);
28           paintGreenCircles(painter, dot);
29   
30           // Creates square
31           SSquare square = new SSquare(200);
32   
33           // Function call to paint white square
34           paintWhiteSquare(painter, square);
35       }
36   
37       // Paints the Blue Circle //
38       private void paintBlueCircle(SPainter painter, SCircle dot) {
39   
40           // Changes the color
41           painter.setColor(Color.BLUE);
42   
43           // Moves painter to position and paints
44           painter.mlt(100);
45           painter.mfd(100);
46           painter.paint(dot);
47   
48           // Invariance of location
49           painter.mrt(100);
50           painter.mbk(100);
51       }
52   
53       // Paints the Red Circle //
54       private void paintRedCircle(SPainter painter, SCircle dot) {
55   
56           // Changes the Color
57           painter.setColor(Color.RED);
58   
59           // Moves painter to position and paints
60           painter.mrt(100);
61           painter.mbk(100);
62           painter.paint(dot);
63   
64           // Invariance of location
65           painter.mlt(100);
66           painter.mfd(100);
67       }
68   
69       // Paints the Green Circles //
70       private void paintGreenCircles(SPainter painter, SCircle dot){
71           // Changes the color
72           painter.setColor(Color.GREEN);
73   
74           // Moves painter to position and paints
75           painter.mlt(100);
76           painter.mbk(100);
77           painter.paint(dot);
78   
79           // Moves painter to next position and paints
80           painter.mfd(200);
81           painter.mrt(200);
82           painter.paint(dot);
83   
84           // Invariance of location
85           painter.mbk(100);
86           painter.mlt(100);
87       }
88   
89       // Paints the White Square //
90       private void paintWhiteSquare(SPainter painter, SSquare square) {
91           // Changes the Color
92           painter.setColor(Color.WHITE);
93           // Paints the square
94           painter.paint(square);
95       }
96   
97       // REQUIRED INFRASTRUCTURE //
98       public KanizsaSquare(){
99           paintTheImage();
100      }
101  
102      public static void main(String[] args){
103          SwingUtilities.invokeLater(new Runnable(){
104              public void run(){
105                  new KanizsaSquare();
106              }
107          });
108      }
109  }
110