jueves, 6 de septiembre de 2012

Último Avance

Ú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
- Libro "Java para Estudiantes"   ------> Autor: Douglas Bell
- Disco Interactivo en Videos     ------> Desconocido
- "Java a fondo"                         ------> Autor: Osiris LMS



No hay comentarios:

Publicar un comentario