Foros del Web » Programación para mayores de 30 ;) » Java »

Carrera de caballos

Estas en el tema de Carrera de caballos en el foro de Java en Foros del Web. Hola, estoy aprendiendo JAVA y estoy haciendo un ejercicio donde en 2 label se muestra a partir de una hipotética carrera de caballos quien es ...
  #1 (permalink)  
Antiguo 02/12/2006, 08:09
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Carrera de caballos

Hola, estoy aprendiendo JAVA y estoy haciendo un ejercicio donde en 2 label se muestra a partir de una hipotética carrera de caballos quien es el ganador y el que queda segundo, hasta aquí todo bien, y se me a ocurrido poner un tercer label, donde se muestra la clasificación general, el numero de caballos así como la distancia la obtengo de forma aleatoria, todo el código, esta implementado para mostrarse en un applet, haber si podéis ayudarme a encontrar lo que estoy haciendo mal, gracias


Clase principal: Caballos
Clase secundaria, donde esta el constructor de cada caballo: Caballo

CABALLOS.CLASS:
Código:
import java.applet.*;
import java.awt.*;

public class Caballos extends Applet
{
	Label l1,l2,l3,l4,l5, l6, l7,l8, l9;
	Color co;
	int x,y, metros, count, a = 20*count, dorsal;
	Panel p;
	String[] po;
	
	public void init()
	{
			l1 = new Label("Carrera de caballos"); 
			l2 = new Label("Resultados");
			l3 = new Label("Ganador:");
			l4 = new Label("Segundo:");
			l6 = new Label();
			l7 = new Label();
			l8 = new Label("Clasificaci�");
			l9 = new Label();
			p = new Panel(new BorderLayout());
			p.setVisible(true);
			p.setBackground(Color.CYAN);
			p.add(l2);
			p.add(l3);
			p.add(l4);
			p.add(l6);
			p.add(l7);
			p.add(l8);
			p.add(l9);
					
			co = new Color(255,255,255);
		
			add(l1);
			add(p);
				
		setLayout(null);
		
		l1.setBounds(250,10,150,30);
		p.setBounds(300,100,250,500);
		l2.setBounds(50,5,150,30);
		l3.setBounds(10,50,90,30);
		l4.setBounds(10,100,90,30);
		l6.setBounds(100,50,100,30);
		l7.setBounds(100,100,100,30);
		l8.setBounds(50,120,200,30);
		l9.setBounds(50,120,200,a);
		
		setBackground(co);
	
		count = (int)(Math.random()*15+4);
		metros = (int)(Math.random()*300+1000);
		
		Caballo[] ca = new Caballo[count];
	
		for(int i=0; i<count; i++)
		{
			ca[i] = new Caballo(i+1,metros,l6,l7);
		}	
		for (int i=0; i<count; i++)
		{
			new Thread (ca[i]).start();
		}
	}
	
	public void posicionar(String[] po1)
	{
		po = po1;
		
		System.out.println(po.length);
		
		for(int i=0; i<=po.length; i++)
		{
			l9.setText("Dorsal: " + po[i] + "\r");
		}
	}
}

CABALLO.CLASS:
Código:
import java.awt.*;
import java.applet.*;

public class Caballo extends Panel implements Runnable
{
	int dorsal, y = 50, metros, avancealeatorio, pos;
	Label l6, l7;
	Canvas c;
	String[] cas;
	Caballos cab;
	
	public Caballo(int d, int m, Label g, Label s)
	{
		dorsal = d;
		metros = m;
		l6 = g;
		l7 = s;
		
		cab = (Caballos)l6.getParent();
		
		setLayout(null);
		
		Label num = new Label("" + dorsal);
		num.setBounds(10,y+22*dorsal,30,20);
		add(num);
					
		c = new Canvas();
		c.setBounds(50,y+22*dorsal,1,20);
		c.setBackground(Color.blue);	
		add(c);
	}	
	
	public void run()
	{
		pos = 0;
		while (pos < metros)
		{
			pos += (int)(Math.random()*0.02+5);
			
			if (pos > metros) pos = metros;
			
			c.setSize(pos*200/metros,20);
		}
		
		if(pos == metros)
		{
			cas = new String[dorsal];
			cab.posicionar(cas);
		}
		
		if (l6.getText().equalsIgnoreCase(""))
			l6.setText("Dorsal: " + dorsal);
		else
		{
			if (l7.getText().equalsIgnoreCase(""))
				l7.setText("Dorsal: " + dorsal);
		}
	}
}

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #2 (permalink)  
Antiguo 03/12/2006, 11:47
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
Bueno, despues de probar y cambiar varias cosas del codigo, lo unico que consigo es que llegen los caballos en el mismo orden en que salen y no se me muestra bien la clasificación, agradeceria un poco de ayuda, publico los cambios:

Caballos.class:
Código:
import java.applet.*;
import java.awt.*;

public class Caballos extends Applet
{
	Label l1,l2,l3,l4,l5, l6, l7,l8, l9;
	Color co;
	int x,y, metros, count, a = 20*count, dorsal;
	Panel p;
	Caballo[] ca;
	int[] contador;
	
	public void init()
	{
			l1 = new Label("Carrera de caballos"); 
			l2 = new Label("Resultados");
			l3 = new Label("Ganador:");
			l4 = new Label("Segundo:");
			l6 = new Label();
			l7 = new Label();
			l8 = new Label("Clasificaci�");
			l9 = new Label();
			p = new Panel(new BorderLayout());
			p.setVisible(true);
			p.setBackground(Color.CYAN);
			p.add(l2);
			p.add(l3);
			p.add(l4);
			p.add(l6);
			p.add(l7);
			p.add(l8);
			p.add(l9);
					
			co = new Color(255,255,255);
		
			add(l1);
			add(p);
				
		setLayout(null);
		
		l1.setBounds(250,10,150,30);
		p.setBounds(300,100,250,500);
		l2.setBounds(50,5,150,30);
		l3.setBounds(10,50,90,30);
		l4.setBounds(10,100,90,30);
		l6.setBounds(100,50,100,30);
		l7.setBounds(100,100,100,30);
		l8.setBounds(50,140,200,30);
		l9.setBounds(50,120,200,a);
		
		setBackground(co);
	
		count = (int)(Math.random()*15+4);
		metros = (int)(Math.random()*300+1000);
			
		ca = new Caballo[count];		
		contador = new int[count];
		
		for(int i=0; i<count; i++)
		{
			ca[i] = new Caballo(i+1,metros,l6,l7,contador);
					new Thread (ca[i]).start();			
		}
						
		for(int i=0; i<contador.length; i++)
		{
			System.out.println(contador[i]);
			l9.setText("\rDorsal: " + contador[i]);
		}
	}
}
Caballo.class:
Código:
import java.awt.*;

public class Caballo extends Panel implements Runnable
{
	int dorsal, y = 50, metros, pos;
	Label l6, l7;
	Canvas c;
	int[] contador;
				
	public Caballo(int d, int m, Label g, Label s, int[] co)
	{
		dorsal = d;
		metros = m;
		l6 = g;
		l7 = s;
		contador = co;
			
		setLayout(null);
		
		Label num = new Label("" + dorsal);
		num.setBounds(10,y+22*dorsal,30,20);
		add(num);
				
		c = new Canvas();
		c.setBounds(50,y+22*dorsal,1,20);
		c.setBackground(Color.blue);	
		add(c);
	}	
	
	public void run()
	{
		pos = 0;
		
		while (pos < metros)
		{
			pos += (int)(Math.random()*202+8);
		}
				
		if (pos >= metros)
		{
			pos = metros;			
			c.setSize(pos*200/metros,20);
			
			int j = 0;
			while(contador[j] == 0)
			{				
				contador[j] = dorsal;
				j++;
				break;
			}
			
			if (l6.getText().equalsIgnoreCase(""))
			{	
				l6.setText("Dorsal: " + dorsal);		
			}
			
			else
			{
				if (l7.getText().equalsIgnoreCase(""))
				{
					l7.setText("Dorsal: " + dorsal);				
				}
			}
		}
	}
}
bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #3 (permalink)  
Antiguo 03/05/2010, 22:08
 
Fecha de Ingreso: mayo-2010
Mensajes: 1
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Carrera de caballos

Que onda amigo, no te moelstaria pasarme ese proyecto me sera de gran ayuda porfis :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:48.