Wednesday, September 5, 2012

Practica 1 "Semáforos"[Laboratorio]

Practica 1 "Cruce Vial con Semáforos Implementados"


Practica 1 Manejo de Clases en la practica


Métodos Utilizados

Métodos que generan todos los datos de carril y define la cantidad de veces que la simulación se ejecutará. Parámetros que ejecutan los valores que se le pasaran al metodo de simulación; determina el numero de veces que la simulación se ejecutará.

    public void Iniciar(String Corridas) {
        generadordeDatosCarril();
        simulaciones(Corridas);

    }

public void simulaciones(String Corridas) {
        int Contador = 0;
        while (Contador < Integer.parseInt(Corridas)) {

            Dibujar_Interseccion();
            MovimientoCarroHztal();
            MovimientoCarroVtcal();

            if (Inicio_semaforo == 10) {
                luces_v = "Verde";
            } else if (Inicio_semaforo == 14) {
                luces_v = "Amarillo";
            } else if (Inicio_semaforo == 15) {
                luces_v = "Rojo";
//.............................................

 
Estas clases y métodos implementados nos funcionan como un indicador o switch para la toma de decisiones sobre las demás clases y métodos implementados para indicar si se coloca o no un carro o si se mueve o no de un espacio a otro.

    public void setVProb(Float verticalProb) {
        prob_VCarro = verticalProb;
    }

    public void setHProb(Float horizontalProb) {
        prob_HCarro = horizontalProb;
    }
Ahora bien creamos una tercer clase que se encarga de darle ahora si, vida a nuestro sistema de semáforos, indicándole a los vehículos cuando podrán avanzar, cuando detenerse o en su caso, poder avanzar en sentidos contrarios al mismo tiempo en cruces hacia la izquierda de ambos sentidos, se utilizan mas pero solo mencionaremos estos dos.
//para los "verticales"
public void MovimientoCarroVtcal() {
        for (int i = ArregloVertical.size() - 1; i > -1; i--) {
            for (int j = 0; j < ArregloVertical.get(0).size(); j++) {
                if (ArregloVertical.get(i).get(j).equals("c")) { //si el elemento es igual a "c" entonces...
                    if (i == ArregloVertical.size() - 1) {
                        ArregloVertical.get(i).set(j, " "); //si el actual carro en el arreglo es el ultimo colocar un espacio vacio" "
                    } else if (i == 9 && luces_v.equals("Verde")) {//........
//para los horizontales

public void MovimientoCarroHztal() {
        for (int i = ArregloHorizontal.size() - 1; i > -1; i--) {
            for (int j = ArregloHorizontal.get(0).size() - 1; j > -1; j--) {
                if (ArregloHorizontal.get(i).get(j).equals("C")) { //si el elemento es igual a C entonces
                    if (j == ArregloHorizontal.get(0).size() - 1) {
                        ArregloHorizontal.get(i).set(j, " ");
                    } else if (luces_h.equals("Rojo") && j == 10) {//.........


Implementamos cada uno de los "threads" que correremos para el control de los semáforos, o dicho de otra manera "el flujo del sistema", mediante la implementación de cada una de las clases trabajando en su conjunto.
public class ProcessA extends CircuitoVial implements Runnable {
  public void run() {
    while (true) {
      try {
        Thread.sleep(1 + (int) (random.nextDouble() * 500));
      } catch (InterruptedException e1) {
        e1.printStackTrace();
      }
      System.out.print("A");
      contador.notifyToWakeup();
    }
  }
}
quedaría pendiente la interfaz gráfica...
Observaciones: Modificaciones realizadas, para evitar problemas o aproximaciones de plagio, comentadas y externadas en este espacio. Aclaración para los gúrus del idioma Ingles y las barreras del idioma: Semáforo para San Google y para cualquier diccionario del idioma Inglés ( Semaphore, Traffic Light(semaforos) o Traffic Lights(plural) Así que aclarado el tema... Pendiente temporal: Interfaz Gráfica y Video, de momento lo importante era ver que no se tuvieran problemas por las observaciones arriba mencionadas.