KanizsaSquare.java
1    package npw;
2    
3    import java.awt.Color;
4    import javax.swing.SwingUtilities;
5    import painter.SPainter;
6    import shapes.SCircle;
7    import shapes.SSquare;
8    
9    
10   public class KanizsaSquare {
11   
12   
13       private void paintTheImage() {
14       SPainter painter = new SPainter("Kanizsa Square", 400, 400);
15   
16           SCircle dot = new SCircle(75) ;
17           paintBlueCircle(painter, dot);
18           paintRedCircle(painter, dot);
19           paintGreenCircles(painter, dot);
20   
21           SSquare square = new SSquare(200);
22           paintWhiteSquare(painter, square);
23   
24       }
25   
26       private void paintWhiteSquare(SPainter painter, SSquare square) {
27           painter.moveToCenter();
28           painter.setColor(Color.WHITE);
29           painter.paint(square);
30   
31       }
32   
33       private void paintGreenCircles(SPainter painter, SCircle dot) {
34           painter.moveToCenter();
35           painter.faceNorth();
36           painter.mrt(100);
37           painter.mfd(100);
38           painter.setColor(Color.GREEN);
39           painter.paint(dot);
40           painter.moveToCenter();
41           painter.faceNorth();
42           painter.mlt(100);
43           painter.mbk(100);
44           painter.paint(dot);
45       }
46   
47       private void paintRedCircle(SPainter painter, SCircle dot) {
48           painter.moveToCenter();
49           painter.faceNorth();
50           painter.mrt(100);
51           painter.mbk(100);
52           painter.setColor(Color.RED);
53           painter.paint(dot);
54   
55       }
56   
57       private void paintBlueCircle(SPainter painter, SCircle dot) {
58           painter.mlt(100);
59           painter.mfd(100);
60           painter.setColor(Color.BLUE);
61           painter.paint(dot);
62       }
63       // REQUIRED INFRASTRUCTURE
64   
65       public KanizsaSquare() {paintTheImage(); }
66   
67   
68       public static void main(String[] args) {
69           SwingUtilities.invokeLater(new Runnable() {
70               @Override
71               public void run() {
72                   new KanizsaSquare() ;
73   
74               }
75           }) ;
76       }
77   }
78   
79   
80