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.
Esos semaforos son los que usa el scheduler del sistema operativo... estas muy perdido a menos que transportes toda la lógica a un sistema productor-consumidor con un buffer independiente.
ReplyDeleteAdemás creo que te faltó la referencia... si es que así se le puede llamar.
http://javapapers.com/core-java/semaphores-using-java/
¡No me silenciaran!
ReplyDeleteese código sale en el primer enlace de google
Nadie te silenciara ever, gracias por tus comentarios. Y para ti Adrian, no se te ocupa a media hora de entregar, se te ocupa desde el principio, da luces mijo somos equipo no autómatas ;) consejo sano, y en buen plan, no me salgas como el fran.
ReplyDeletehttp://javapapers.com/core-java/semaphores-using-java/
ReplyDeleteNo me gusta cuando suceden este tipo de situaciones; espero el martes poder ver lo que realmente tienen. De ahí en fuera, tendría que aplicar la primera advertencia en cuanto a la cuestión del plagio de código. =s
Échenle ganas.
Lo tendrá Dr Sara, se que es algo incomodo, pero como se lo menciono al compañero, no estábamos organizados adecuadamente y aquí se ve reflejado el resultado de ello.
DeleteHubo modificaciones al código original, que se ven al interior del código, pero sí es un hecho que nos basamos en el ejemplo de Joseph Kulandai R; por la premura y pésimo orden por parte del equipo.