Java - AYUDA!!!URGENTE SOLO TENGO 5 HORAS

 
Vista:

AYUDA!!!URGENTE SOLO TENGO 5 HORAS

Publicado por GUILLEN (3 intervenciones) el 04/12/2005 23:12:45
BUENAS Y GRACIAS POR SU TIEMPO Y AYUDA. TENGO UN PROGRAMA QUE SIMULA LA SOLICITUD DE UN ELEVADOR, ES DECIR, SU MOVIMIENTO, ESTO POR MEDIO DE UN HILO! TENGO DOS GRAVES PROBLEMAS SOLO REALIZA UNA SOLICITUD ( 1 VIAJE) Y DOS SOLO EN MI MAQUINA SE PUEDE VER DICHA ANIMACION.
OTRO NECESITO DE EJEMPLOS DE LA APLICACION DE RMI EN JAVA!
ESTAS SON LAS CLASES DE MI PROGRAMA:


======================================================================
import java.awt.*;
import javax.swing.*;

public class Clon_Edificio extends JFrame implements Runnable{
private long s,m;
private int c,i,pisos,x,y,y1,altura,ancho,XL,YL,np,destino,actual,xd,yd,xa,ya,incremento,cabrir,ccerrar,cmovimiento,cmover;
private ListaD lista;
private boolean animar;
boolean solicitud,tmov,bcerrar,babrir,bmover,bllego;
private String flecha;
private NodoDestino nodoSolicitud;
private Nodo nSolicitud;
private Thread hiloControl;
private Font tipoBase,tipoBase2;

/** Creates a new instance of Clon_Edificio */
public Clon_Edificio(String nombre,int anc, int alt,int p) {
super(nombre);
setSize(anc,alt);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
lista=new ListaD();
pisos=p;
lista.insertarDestino(1,2);/*Este es una insercion de la lista de solicitudes,
el primer numero es el destino y el segundo el actual*/
s=0;
c=1;
cabrir=0;
ccerrar=0;
cmover=0;
m=0;
x=10;
y1=0;
altura=85;
ancho=60;
tmov=false;
babrir=false;
bmover=false;
bcerrar=true;
bllego=false;
solicitud=false;
animar=false;
hiloControl = new Thread(this);
tipoBase = new Font("Arial", Font.BOLD, 8);
tipoBase2 = new Font("Serif", Font.BOLD, 12);

setVisible(true);

}
public void init()
{
show();

}

public void start()
{
if(hiloControl != null)
hiloControl.start();
}

public void MovimientoAsensor(Graphics g){
cmovimiento++;
if (cmovimiento<(16*cmover)){
g.setColor(Color.WHITE);
g.fill3DRect(xa-6,(ya-20)+(cmovimiento*incremento), ancho/2, altura+15, true);
g.fill3DRect((xa+30)-6,(ya-20)+(cmovimiento*incremento), ancho/2, altura+15, true);
if(cmovimiento==16*cmover-1){
bmover=false;
babrir=true;
cmovimiento=0;
}
}

}

public void CerrarPuertas(Graphics g){
ccerrar++;
if(ccerrar<7){
g.fill3DRect(xa-5,ya-15,5*ccerrar, altura+15, true);//De Izq a Der
g.fill3DRect(((xa+55)-(5*ccerrar)),ya-15,5*ccerrar, altura+15, true);
if(ccerrar==6){
bcerrar=false;
bmover=true;
ccerrar=0;
}
}
}

public void AbrirPuertas(Graphics g){
cabrir++;
if(cabrir<7){
g.setColor(Color.WHITE);
g.fill3DRect(xd-5,yd-15,(ancho/2)-5*cabrir, altura+15, true);//De Der a Izq
g.fill3DRect((xd+25)+(5*cabrir),yd-15,(ancho/2)-5*cabrir, altura+15, true);
if(cabrir==6){
babrir=false;
bllego=true;
cabrir=0;
}
}
}
/*Este metodo lo unico que hace es ver si hay algo en la lista de solicitudes,
para asi llenar las variables que necesitan los diversos procesos que intervienen en
la animacion*/
public void Proceso_Solicitud(){
if ((nodoSolicitud=lista.LeerSolicitud())!=null){
destino=lista.Destino(nodoSolicitud);
actual=lista.Actual(nodoSolicitud);
nSolicitud=lista.Buscar(destino);
xd=nSolicitud.xp;
yd=nSolicitud.yp;
nSolicitud=lista.Buscar(actual);
xa=nSolicitud.xp;
ya=nSolicitud.yp;
flecha=lista.Tipo_Senal(destino,actual);
cmover=Math.abs((destino-actual));

}

}
/*Este metodo se encraga de la animacion de una solicitud, este realiza eel movimiento
de las puertas del elevador ademas del movimiento en si del asensor*/
public void Animacion(Graphics g){
Proceso_Solicitud();
System.out.println("Animar>>>>"+animar);
g.setFont(tipoBase2);
g.setColor(Color.WHITE);
if(flecha.equals("+"))
incremento=-7;
if (flecha.equals("-"))
incremento=7;

if(bcerrar==true){
//Movimiento de las puertas al cerrar
CerrarPuertas(g);
}
if(bmover==true){
//Movimiento del ascensor
MovimientoAsensor(g);
}
if((babrir==true)){//MOVIMIENTO ABRIR PUERTAS*/
AbrirPuertas(g);
}
g.setColor(Color.YELLOW);
g.drawString("PISO # "+actual,xa,ya);
g.setColor(Color.BLACK);
if(bllego==true){//Si es cierto, la peticion de un asensor se cumplio
bllego=false;
lista.BorrarCabezaDestino(nodoSolicitud);
}
g.setColor(Color.RED);
g.drawString("PISO # "+destino,xd,yd);

}
/*Este metodo lo unico que realiza es la verificacion de las lista que contiene las solicitudes*/
public boolean Proceso_Solicitud2(){
boolean bandera=false;
if ((nodoSolicitud=lista.LeerSolicitud())!=null){
bandera=true;

}
return bandera;
}


public void run()
{
try
{
solicitud=Proceso_Solicitud2();
while((true)||(solicitud==true))
{
s++;
if (s==60){
s=0;
m++;
if (m==60){
s=0;
m=0;
}

}
repaint();
hiloControl.sleep(1000);
}

}
catch(InterruptedException ie)
{
System.out.println("Ha ocurrido una excepción" + ie);
}

}

public void paint(Graphics g)
{
super.paint(g);
np=pisos;
g.setColor(Color.BLACK);
for (i=0;i<pisos;i++){
y1=60+(105*i);
g.setColor(Color.BLUE);
g.setColor(Color.BLACK);
g.fillRect(x,(y1-5), (ancho+1),5);/*grosor de los pisos*/
XL=x+7;
YL=y1+15;
g.setColor(Color.BLUE);
g.setFont(tipoBase2);
g.drawString("PISO # " +np,XL,YL);
g.setColor(Color.WHITE);
g.setColor(Color.BLUE);
lista.insertarCabeza(np,XL,YL);
np--;
}
g.setColor(Color.BLACK);
g.draw3DRect(x,60,ancho,(y1+40),false);
g.setFont(tipoBase);
g.drawString("m: " +m+" s: " +s, 35, 1);
lista.Visualizar();
if (solicitud=Proceso_Solicitud2()==true){
Animacion(g);

}

}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder