KanizsaSquare.java
1    /* 
2     * write a program called KanizsaSquare within the npw package to paint an image of a (more colorful than usual) 
3     * Kanizsa Square. 
4     */
5    
6    package npw;
7    
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       private void paintTheImage() {
17           SPainter painter = new SPainter("Kanizsa Square",400,400);
18   
19           SCircle dot = new SCircle(75);
20           paintBlueCircle(painter, dot);
21           paintRedCircle(painter, dot);
22           paintGreenCircles(painter, dot);
23   
24           SSquare square = new SSquare(200);
25           paintWhiteSquare(painter, square);
26       }
27   
28   
29   
30       //REQUIRED INFRASTRUCTURE
31   
32       public KanizsaSquare() {
33           paintTheImage();
34       }
35   
36       public static void main(String[] args) {
37           SwingUtilities.invokeLater(new Runnable() {
38               public void run() {
39                   new KanizsaSquare();
40               }
41           });
42       }
43   
44       private void paintBlueCircle (SPainter painter, SCircle dot) {
45           painter.mlt(100); painter.mfd(100);
46           painter.setColor(Color.BLUE);
47           painter.paint(dot);
48           //move painter back
49           painter.mrt(100); painter.mbk(100);
50   
51       }
52   
53       private void paintRedCircle (SPainter painter, SCircle dot) {
54           painter.mrt(100); painter.mbk(100);
55           painter.setColor(Color.RED);
56           painter.paint(dot);
57           //move painter back
58           painter.mlt(100); painter.mfd(100);
59   
60       }
61   
62       private void paintGreenCircles (SPainter painter, SCircle dot) {
63           //Top right circle
64           painter.mrt(100); painter.mfd(100);
65           painter.setColor(Color.GREEN);
66           painter.paint(dot);
67           //move painter back
68           painter.mlt(100); painter.mbk(100);
69   
70           painter.mlt(100); painter.mbk(100);
71           painter.setColor(Color.GREEN);
72           painter.paint(dot);
73           //move painter back
74           painter.mrt(100); painter.mfd(100);
75   
76       }
77   
78       private void paintWhiteSquare (SPainter painter, SSquare square) {
79           painter.setColor(Color.WHITE);
80           painter.paint(square);
81   
82       }
83   }