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