Último avance (Semáforo)
- Desarrollo (Parte 3)
- Codificación Back-End
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class ventana extends JFrame{
private static final long serialVersionUID = 1L;
String semaforos[]={"Imagenes//rojo.jpg","Imagenes//verde.jpg"};
String movimiento[]={"Imagenes//carroizq.png","Imagenes//carroder.png","Imagenes//carroup.png","Imagenes//carroabajo.png"};
int i=0,j=0,k=0,q=0,w,l;
JLabel fondo = new JLabel();
int tiempo = 1000;
int maximo=10;
int vida = 1000;
int totalvida;
int ence1=1,ence2,ence3,ence4;
int d,a,m,c;
int t,y,u,o;
int carros11=9,carros12=1,carros21=3,carros22=4;
int llegada11,llegada12,llegada21,llegada22;
Timer iniciovida = new Timer(vida , new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
totalvida+=vida;
}
});
Timer apertura = new Timer(vida , new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
if(carros11>=maximo)
{
i=1;
j=0;
ence1=1;
q=0;
k=0;
}
else if(carros12>=maximo)
{
j=1;ence2=1;
k=0;
i=0;
q=0;
}
else if(carros21>=maximo)
{
k=1;
j=0;
q=0;ence3=1;
i=0;
}
else if(carros22>=maximo)
{
q=1;
i=0;
k=0;ence4=1;
j=0;
}
}
});
Timer semaforo11 = new Timer(vida, new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
d+=vida;
if(i==0)
{ence1=0;
if(d>=6000)
{
llegada11=Semaforo.aleatorio(2,3);
carros11+=llegada11;
System.out.println("carros11:" +carros11);
d=0;
}
}
if(i==1)
{
ence1=1;
do
{
repaint();
if(carros11>0)
{
carros11-=1;
System.out.print("sale11\n");
w=350;
for(l=0;l>=720;l++)
{
repaint();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
}
}while(carros11>1);
}ence1=0;
}
}
)
;
Timer semaforo12 = new Timer(vida, new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if(j==0)
{ence2=0;
a+=vida;;
if(a>=3000)
{
llegada12=Semaforo.aleatorio(1, 4);
carros12+=llegada12;
System.out.println("carros12:"+carros12);
a=0;
}
}
if(j==1)
{
do
{
if(carros12>0)
{
carros12-=1;
System.out.print("sale12\n");
ence2=1;
repaint();
y=0;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
}while(carros12>1);
}ence2=0;
}
}
)
;
Timer semaforo21 = new Timer(vida, new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if(k==0)
{ence3=0;
m+=vida;
if(m>=3000)
{
llegada21=Semaforo.aleatorio(2, 4);
carros21+=llegada21;
System.out.println("carros21:"+carros21);
m=0;
}
}
if(k==1)
{
do
{
if(carros21>0)
{
carros21-=1;
System.out.print("sale21\n");
ence3=1;
repaint();
u=0;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
}while(carros21>1);
}ence3=0;
}
}
)
;
Timer semaforo22 = new Timer(vida, new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if(q==0)
{ence4=0;
c+=vida;;
if(c>=3000)
{
llegada22=Semaforo.aleatorio(2, 4);
carros22+=llegada22;
System.out.println("carros22:"+carros22);
c=0;
}
}
if(q==1)
{
do{
if(carros22>0)
{
carros22-=1;
System.out.print("sale22\n");
ence4=1;
repaint();
o=0;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
}while(carros22>1);
}ence4=0;
}
}
)
;
public void paint(Graphics g)
{
super.paint(g);
add (fondo);
g.drawImage(new ImageIcon(getClass().getResource(semaforos[ence1])).getImage(),300,200,50,50,this);
g.drawImage(new ImageIcon(getClass().getResource(semaforos[ence2])).getImage(),600,200,50,50,this);
g.drawImage(new ImageIcon(getClass().getResource(semaforos[ence3])).getImage(),300,470,50,50,this);
g.drawImage(new ImageIcon(getClass().getResource(semaforos[ence4])).getImage(),600,470,50,50,this);
g.drawImage(new ImageIcon(getClass().getResource(movimiento[0])).getImage(),0,300,100,70,this);
g.drawImage(new ImageIcon(getClass().getResource(movimiento[1])).getImage(),860,390,100,70,this);
g.drawImage(new ImageIcon(getClass().getResource(movimiento[3])).getImage(),500,30,70,100,this);
g.drawImage(new ImageIcon(getClass().getResource(movimiento[2])).getImage(),400,600,70,100,this);
}
public ventana()
{
this.setSize(960,720);
this.setTitle("Semaforo");
this.setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
fondo.setIcon(new ImageIcon(getClass().getResource("Imagenes//fondo.jpg")));
this.add (fondo);
this.setVisible(true);
semaforo11.start();
semaforo12.start();
semaforo21.start();
semaforo22.start();
apertura.start();
iniciovida.start();
}
}
- Demo (Video)
- Conclusión
Una de las enseñanzas como experiencia que nos deja ésta práctica es que no debemos enfocarnos tanto en la interfaz ya que lo principal es la lógica y el funcionamiento en el caso del semáforo. Los principales problemas a la hora de realizar esta práctica no fueron solamente sobre lo que viene siendo la lógica del funcionamiento de los semáforos si no también, la correcta creación de la interfaz del programa.
Entre las cosas con las que estuvimos batallando fue la manera de alternar los semáforos ya que no lográbamos encontrar bien la lógica funcional del sistema para poder coordinarlo como la implementacion de un crucero real.
Con esto llegamos a la conclusión que debemos adentrarnos mas al estudio de la programación en el lenguaje java al igual que aprender mas sobre los que viene siendo los Threads (hilos).
- Referencias
- Disco Interactivo en Videos ------> Desconocido
- "Java a fondo" ------> Autor: Osiris LMS
No hay comentarios:
Publicar un comentario