Invention1.java
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