KanizsaSquare.java
1    package npw;
2    
3    import java.awt.*;
4    import javax.swing.*;
5    import painter.SPainter;
6    import shapes.SCircle;
7    import shapes.SSquare;
8    
9    public class KanizsaSquare {
10   
11       //THE SOLUTION TO THE KANIZSA SQUARE PROBLEM
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       private void paintWhiteSquare(SPainter painter, SSquare square) {
26           painter.setColor(Color.WHITE);
27           painter.paint(square);
28       }
29   
30       private void paintGreenCircles(SPainter painter, SCircle dot) {
31           painter.mbk(100);
32           painter.mlt(100);
33           painter.setColor(Color.GREEN);
34           painter.paint(dot);
35   
36           painter.mfd(200);
37           painter.mrt(200);
38           painter.paint(dot);
39   
40           painter.mbk(100);
41           painter.mlt(100);
42       }
43   
44       private void paintRedCircle(SPainter painter, SCircle dot) {
45           painter.mrt(100);
46           painter.mbk(100);
47           painter.setColor(Color.RED);
48           painter.paint(dot);
49   
50           painter.mlt(100);
51           painter.mfd(100);
52       }
53   
54       private void paintBlueCircle(SPainter painter, SCircle dot) {
55           painter.mlt(100);
56           painter.mfd(100);
57           painter.setColor(Color.BLUE);
58           painter.paint(dot);
59   
60           painter.mrt(100);
61           painter.mbk(100);
62       }
63   
64       public KanizsaSquare() {
65           paintTheImage();
66       }
67   
68       public static void main(String[] args){
69           SwingUtilities.invokeLater(new Runnable() {
70               public void run() {
71                   new KanizsaSquare();
72               }
73           });
74       }
75   
76   }
77