Sunday, February 24, 2013

Traffic Lights in java

object oriented programming



import javax.swing.JFrame;


public class TrafficControlApp {

    /**
     * @param args
     */
    public static void main(String[] args) {
        TrafficLight application = new TrafficLight();
        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;


public class TrafficFixtureForward{

    public int locateX;
    public String direction;
   
    public TrafficFixtureForward(String direction, int locateX){
        this.locateX = locateX;
        this.direction = direction;
    }
   
    public void trafficLight(Graphics g, int state){
       
        g.setColor(Color.black);
        g.setFont(new Font("Arial",Font.BOLD, 12));
        g.drawString(direction, (locateX+4), 250);
       
        switch(state){
        case 1: g.setColor(Color.red);
                g.fillOval(locateX,30,50,50);
       
                g.setColor(Color.black);
                g.fillOval(locateX,90,50,50);
       
                g.setColor(Color.black);
                g.fillOval(locateX,150,50,50);
               
                break;
       
        case 2: g.setColor(Color.black);
                g.fillOval(locateX,30,50,50);

                g.setColor(Color.yellow);
                g.fillOval(locateX,90,50,50);

                g.setColor(Color.black);
                g.fillOval(locateX,150,50,50);
                break;
       
        case 3: g.setColor(Color.black);
                g.fillOval(locateX,30,50,50);

                g.setColor(Color.black);
                g.fillOval(locateX,90,50,50);

                g.setColor(Color.green);
                g.fillOval(locateX,150,50,50);
                break;
       
        case 4: g.setColor(Color.black);
                g.fillOval(locateX,30,50,50);

                g.setColor(Color.black);
                g.fillOval(locateX,90,50,50);

                g.setColor(Color.green);
                g.fillOval(locateX,150,50,50);
                break;
        }
    }
   
    public void delay(int delay){
        try
        {
            Thread.sleep(delay); // do nothing for 1000 miliseconds (1 second)
           
        }
        catch(InterruptedException e)
        {
            e.printStackTrace();
        }
    }
   
}import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;


public class TrafficFixtureTurn{

    public int locateX;
    public String direction;
   
    public TrafficFixtureTurn(String direction, int locateX){
        this.locateX = locateX;
        this.direction = direction;
    }
    public void trafficLight(Graphics g,int state){
       
        g.setColor(Color.black);
        g.setFont(new Font("Arial",Font.BOLD, 12));
        g.drawString(direction, (locateX+4), 250);
       
        switch(state){
        case 1: g.setColor(Color.black);
                g.fillOval( locateX,30,50,50);
           
                g.setColor(Color.red);
                g.setFont(new Font("Arial",Font.BOLD, 40));
                g.drawString("<", (locateX+10), 69);
       
                g.setColor(Color.black);
                g.fillOval(locateX,90,50,50);
       
                g.setColor(Color.black);
                g.fillOval(locateX,150,50,50);
               
                break;
       
        case 2: g.setColor(Color.black);
                g.fillOval(locateX,30,50,50);

                g.setColor(Color.black);
                g.fillOval(locateX,90,50,50);
               
                g.setColor(Color.yellow);
                g.setFont(new Font("Arial",Font.BOLD, 40));
                g.drawString("<", (locateX+10), 129);

                g.setColor(Color.black);
                g.fillOval(locateX,150,50,50);
                break;
       
        case 3: g.setColor(Color.black);
                g.fillOval(locateX,30,50,50);

                g.setColor(Color.black);
                g.fillOval(locateX,90,50,50);

                g.setColor(Color.black);
                g.fillOval(locateX,150,50,50);
               
                g.setColor(Color.green);
                g.setFont(new Font("Arial",Font.BOLD, 40));
                g.drawString("<", (locateX+10), 189);
               
                break;
        case 4: g.setColor(Color.black);
                g.fillOval(locateX,30,50,50);

                g.setColor(Color.black);
                g.fillOval(locateX,90,50,50);

                g.setColor(Color.black);
                g.fillOval(locateX,150,50,50);
               
                g.setColor(Color.green);
                g.setFont(new Font("Arial",Font.BOLD, 40));
                g.drawString("<", (locateX+10), 189);
               
                break;
       
        }
    }
   
    public void delay(int delay){
        try
        {
            Thread.sleep(delay); // do nothing for 1000 miliseconds (1 second)
           
        }
        catch(InterruptedException e)
        {
            e.printStackTrace();
        }
    }
   
}
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;


public class TrafficLight extends JFrame{
   
    /**
     *
     */
    private static final long serialVersionUID = 1L;

    public TrafficLight(){
       
        super("Traffic Control Simulation");
        setSize(400,400);
        getContentPane().setBackground(Color.white);
        setVisible(true);
    }

    public void paint( Graphics g){
        super.paint(g);
       
        TrafficFixtureForward westBound = new TrafficFixtureForward("West",30);
        TrafficFixtureForward eastBound = new TrafficFixtureForward("East",210);
        TrafficFixtureTurn turn = new TrafficFixtureTurn("Left Turn", 120);
        TrafficFixtureForward northBound = new TrafficFixtureForward("North",300);
       
        for(int x = 0; x <= 2000; x++){
            //Turn Red, West Forward Green, East Forward Red
            turn.trafficLight(g, 1);
            westBound.trafficLight(g, 3);
            eastBound.trafficLight(g, 3);
            northBound.trafficLight(g, 1);
            westBound.delay(2000);
           
            //Turn Red, West Forward Yellow, East Forward Red
            turn.trafficLight(g, 1);
            westBound.trafficLight(g, 2);
            eastBound.trafficLight(g, 2);
            northBound.trafficLight(g, 1);
            westBound.delay(2000);
           
            //Turn Red, West Forward Red, East Forward Red
            turn.trafficLight(g, 1);
            westBound.trafficLight(g, 1);
            eastBound.trafficLight(g, 1);
            northBound.trafficLight(g, 1);
            westBound.delay(800);
           
            //Turn Green, West Forward Red, East Forward Red
            turn.trafficLight(g, 3);
            westBound.trafficLight(g, 1);
            eastBound.trafficLight(g, 1);
            northBound.trafficLight(g, 3);
            westBound.delay(2000);
           
            //Turn Yellow, West Forward Red, East Forward Red
            turn.trafficLight(g, 2);
            westBound.trafficLight(g, 1);
            eastBound.trafficLight(g, 1);
            northBound.trafficLight(g, 2);
            westBound.delay(2000);
           
            //Turn Red, West Forward Red, East Forward Red
            turn.trafficLight(g, 1);
            westBound.trafficLight(g, 1);
            eastBound.trafficLight(g, 1);
            northBound.trafficLight(g, 1);
            westBound.delay(800);
        }
    }
}

No comments:

Post a Comment