1 package npw;/* 2 *Project invention1 3 * In this program, the user will have to solve the traffic problem by changing traffic light, in other words this is a 4 * program which you can use to change the lights. 5 */ 6 7 import painter.SPainter; 8 import shapes.SCircle; 9 import shapes.SSquare; 10 11 import javax.swing.*; 12 import java.awt.*; 13 import java.util.Random; 14 15 public class Invention1 { 16 17 private void paintTheImage() { 18 SPainter painter = new SPainter("Traffic Light", 300, 900); 19 painter.setBrushWidth(3); 20 SSquare square = new SSquare(300); 21 SCircle smallCircle = new SCircle(120); 22 painter.setColor(this.metallicGray()); 23 painter.paint(square); 24 painter.setColor(Color.BLACK); 25 painter.draw(square); 26 painter.draw(smallCircle); 27 painter.setColor(this.deadOrange()); 28 painter.paint(smallCircle); 29 painter.setColor(Color.BLACK); 30 painter.mfd(square.side()); 31 painter.setColor(this.metallicGray()); 32 painter.paint(square); 33 painter.setColor(Color.BLACK); 34 painter.draw(square); 35 painter.draw(smallCircle); 36 painter.setColor(this.deadRed()); 37 painter.paint(smallCircle); 38 painter.setColor(Color.BLACK); 39 painter.mbk(2.0D * square.side()); 40 painter.setColor(this.metallicGray()); 41 painter.paint(square); 42 painter.setColor(Color.BLACK); 43 painter.draw(square); 44 painter.draw(smallCircle); 45 painter.setColor(this.deadGreen()); 46 painter.paint(smallCircle); 47 painter.setColor(Color.BLACK); 48 painter.mfd(square.side()); 49 50 while(true) { 51 while(true) { 52 String command = JOptionPane.showInputDialog((Component)null, "Command?"); 53 if (command == null) { 54 command = "exit"; 55 } 56 57 if (command.equalsIgnoreCase("go")) { 58 this.go(painter, square, smallCircle); 59 } else if (command.equalsIgnoreCase("stop")) { 60 this.stop(painter, square, smallCircle); 61 } else if (command.equalsIgnoreCase("slowdown")) { 62 this.ready(painter, square, smallCircle); 63 } else if (!command.equalsIgnoreCase("random") && !command.equalsIgnoreCase("r")) { 64 if (command.equalsIgnoreCase("exit")) { 65 painter.end(); 66 System.out.println("Thanks You For Your Help!...."); 67 return; 68 } 69 70 JOptionPane.showMessageDialog((Component)null, "Unrecognizable command:" + command.toUpperCase()); 71 } else { 72 this.randomColor(painter, square, smallCircle); 73 } 74 } 75 } 76 } 77 78 private void allDead(SPainter painter, SSquare square, SCircle smallCircle) { 79 painter.setColor(this.deadOrange()); 80 painter.paint(smallCircle); 81 painter.mfd(square.side()); 82 painter.setColor(this.deadRed()); 83 painter.paint(smallCircle); 84 painter.mbk(2.0D * square.side()); 85 painter.setColor(this.deadGreen()); 86 painter.paint(smallCircle); 87 painter.mfd(square.side()); 88 } 89 90 private void go(SPainter painter, SSquare square, SCircle smallCircle) { 91 this.allDead(painter, square, smallCircle); 92 painter.setColor(Color.green); 93 painter.mbk(square.side()); 94 painter.paint(smallCircle); 95 painter.mfd(square.side()); 96 } 97 98 private void stop(SPainter painter, SSquare square, SCircle smallCircle) { 99 this.allDead(painter, square, smallCircle); 100 painter.setColor(Color.RED); 101 painter.mfd(square.side()); 102 painter.paint(smallCircle); 103 painter.mbk(square.side()); 104 } 105 106 private void ready(SPainter painter, SSquare square, SCircle smallCircle) { 107 this.allDead(painter, square, smallCircle); 108 painter.setColor(this.orange()); 109 painter.paint(smallCircle); 110 } 111 112 private Color metallicGray() { 113 return new Color(67, 70, 75); 114 } 115 116 private Color orange() { 117 return new Color(255, 165, 0); 118 } 119 120 private Color deadGreen() { 121 return new Color(42, 163, 50); 122 } 123 124 private Color deadOrange() { 125 return new Color(181, 96, 25); 126 } 127 128 private Color deadRed() { 129 return new Color(181, 5, 5); 130 } 131 132 private void randomColor(SPainter painter, SSquare square, SCircle smallCircle) { 133 Random rgen = new Random(); 134 int rn = rgen.nextInt(3); 135 if (rn == 0) { 136 this.go(painter, square, smallCircle); 137 } else if (rn == 1) { 138 this.ready(painter, square, smallCircle); 139 } else if (rn == 2) { 140 this.stop(painter, square, smallCircle); 141 } 142 143 } 144 145 public Invention1() { 146 this.paintTheImage(); 147 } 148 149 public static void main(String[] args) { 150 SwingUtilities.invokeLater(new Runnable() { 151 public void run() { 152 new Invention1(); 153 } 154 }); 155 } 156 } 157 158