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