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.