a java program to create animated traffic signal (use 5 seconds to blink each light one after the other) using multithreading.
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class traffic extends Applet implements Runnable{
Thread t;
Font f,f1;
int i=0,a=0,j=0;
public void init(){
setBackground(Color.lightGray);
f=new Font("TimesNewRoman",f.ITALIC,28);
f1=new Font("TimesNewRoman",Font.ITALIC+Font.BOLD,28);
}
public void start() {
t=new Thread(this);
t.start();
}
public void run(){
for(i=25;i>=0;i--){
try {
Thread.sleep(5000);
}
catch(Exception e){
System.out.println(e);
}
if(i<=25 && i>3){
a=1;
repaint();
}
else
if(i<=3 && i>0){
a=2;
repaint();
}
else
if(i==0){
for(j=0;j<25;j++){
a=3;
try {
Thread.sleep(5000);
}
catch(Exception e){
System.out.println(e);
}
repaint();
}
if(j==25){
run();
}
}
}
repaint();
}
continue..
public void paint(Graphics g) {
setBackground(Color.lightGray);
g.setColor(Color.black);
g.fillArc(100,150,100,100,0,180);
g.drawArc(100,150,100,100,0,180);
g.setColor(Color.black);
g.fillRect(150,150,50,150);
g.drawRect(150,150,50,150);
g.setColor(Color.black);
g.fillRect(165,300,20,155);
g.drawRect(165,300,20,155);
g.drawOval(150,150,50,50);
g.drawOval(150,200,50,50);
g.drawOval(150,250,50,50);
g.setColor(Color.red);
g.setFont(f);
g.drawString(""+i,50,50);
g.setColor(Color.white);
g.fillRect(300,5,15,125);
g.drawRect(300,5,15,125);
g.setColor(Color.white);
g.fillRect(300,145,15,135);
g.drawRect(300,145,15,135);
g.setColor(Color.white);
g.fillRect(300,300,15,135);
g.drawRect(300,300,15,135);
g.setColor(Color.white);
g.fillRect(450,5,15,125);
g.drawRect(450,5,15,125);
g.setColor(Color.white);
g.fillRect(450,145,15,135);
g.drawRect(450,145,15,135);
g.setColor(Color.white);
g.fillRect(450,300,15,135);
g.drawRect(450,300,15,135);
g.setColor(Color.black);
g.fillRect(600,300,15,135);
g.drawRect(600,300,15,135);
g.setColor(Color.green);
g.fillArc(560,290,100,100,0,180);
g.drawArc(560,290,100,100,0,180);
g.setColor(Color.black);
g.fillRect(460,300,15,135);
g.drawRect(460,300,15,135);
g.setColor(Color.green);
g.fillArc(420,290,100,100,0,180);
g.drawArc(420,290,100,100,0,180);
if(a==1){
g.setColor(Color.red);
g.fillOval(150,150,50,50);
g.drawOval(150,150,50,50);
g.drawString("STOP",50,150);
}
if(a==2){
g.setColor(Color.yellow);
g.fillOval(150,200,50,50);
g.drawOval(150,200,50,50);
g.drawString("READY",50,200);
}
if(a==3){
g.setColor(Color.blue);
g.setFont(f);
g.drawString(""+j,150,50);
g.setColor(Color.green);
g.fillOval(150,250,50,50);
g.drawOval(150,250,50,50);
g.drawString("GO",50,250);
}
int x1[]={220,300,300,280};
int y1[]={250,150,250,150};
int n1=4;
int n2=3;
int x2[]={340,380,380};
int y2[]={150,100,150};
int x3[]={460,460,500};
int y3[]={150,100,150};
g.setColor(Color.black);
g.fillPolygon(x1,y1,n1);
g.drawPolygon(x1,y1,n1);
g.setColor(Color.yellow);
g.fillRect(380,100,80,50);
g.drawRect(380,100,80,50);
g.setColor(Color.yellow);
g.fillPolygon(x2,y2,n2);
g.drawPolygon(x2,y2,n2);
g.setColor(Color.yellow);
g.fillPolygon(x3,y3,n2);
g.drawPolygon(x3,y3,n2);
g.setColor(Color.black);
g.fillOval(440,210,60,60);
g.drawOval(440,210,60,60);
g.setColor(Color.black);
g.fillOval(340,210,60,60);
g.drawOval(340,210,60,60);
g.setColor(Color.red);
g.fillRect(300,150,250,100);
g.drawRect(300,150,250,100);
g.setColor(Color.black);
g.setFont(f1);
g.drawString ("Zumbo",380,200);
}
}