KanizsaSquare.java
1    
2    //Assignment 1, problem 2: this program creates the kanizsa square.
3    
4    package npw;
5    
6    import java.awt.Color;
7    import javax.swing.SwingUtilities;
8    import painter.SPainter;
9    import shapes.SCircle;
10   import shapes.SSquare;
11   
12   public class KanizsaSquare {
13   
14       // The solution to the KanizsaSquare problem
15   
16       private void paintTheImage() {
17           SPainter painter = new SPainter("Kanizsa square" ,400,400);
18           SCircle dot = new SCircle(75);
19   
20           //Blue circle method
21           paintBlueCircle(painter, dot);
22           //Red circle method
23           paintRedCircle(painter, dot);
24           //Green circle method
25           paintGreenCircle(painter, dot);
26   
27           SSquare square = new SSquare(200);
28           //White square method
29           paintWhiteSquare(painter, square);
30       }
31       private void paintBlueCircle(SPainter painter, SCircle dot) {
32           painter.setColor(Color.BLUE);
33           //Moves painter forward (towards top of canvas)
34           painter.mfd(90);
35           //Moves painter to the left (towards left of the canvas)
36           painter.mlt(100);
37           painter.paint(dot);
38           //Moves painter back to center
39           painter.moveToCenter();
40           //Sets painter's position back to facing north (towards top of canvas)
41           painter.faceNorth();
42       }
43   
44       private void paintRedCircle(SPainter painter, SCircle dot) {
45           painter.setColor(Color.RED);
46           //Moves painter backwards (towards bottom of canvas)
47           painter.mbk(90);
48           //Moves painter to the right
49           painter.mrt(100);
50           painter.paint(dot);
51           //Moves painter to center
52           painter.moveToCenter();
53           //Turns painter back facing north (towards top of canvas)
54           painter.faceNorth();
55       }
56   
57       private void paintGreenCircle(SPainter painter, SCircle dot) {
58           painter.setColor(Color.GREEN);
59           //Moves painter forward (towards top of canvas)
60           painter.mfd(90);
61           //Moves painter to the right (towards right side of canvas)
62           painter.mrt(100);
63           painter.paint(dot);
64           //Gets painters location
65           //Moves painter to center
66           painter.moveToCenter();
67           //Sets painters position back to facing north (towards top of canvas)
68           painter.faceNorth();
69   
70   
71           //Start of second green circle
72           painter.mbk(90);
73           //Moves painter to the left (towards left side of canvas)
74           painter.mlt(100);
75           painter.paint(dot);
76           //Moves painter to center
77           painter.moveToCenter();
78           //Sets painters position back to facing north (towards top of canvas)
79           painter.faceNorth();
80       }
81   
82       private void paintWhiteSquare(SPainter painter, SSquare square) {
83           painter.setColor(Color.WHITE);
84           painter.paint(square);
85       }
86   
87   
88   
89   
90   
91   
92   
93       // Required infrastructure \
94   
95       public KanizsaSquare() {
96           paintTheImage();
97       }
98   
99       public static void main(String[] args) {
100          SwingUtilities.invokeLater(new Runnable() {
101              public void run() {
102                  new KanizsaSquare();
103              }
104          });
105      }
106  }
107