Foro de elhacker.net

Programación => Java => Mensaje iniciado por: raulespinoza en 9 Junio 2009, 07:12 am



Título: Simular Carrera de Autos (o caballos)
Publicado por: raulespinoza en 9 Junio 2009, 07:12 am
Hola amigos, no se si ustedes han visto las Apuestas de Carreras de Autos (o caballos q es el mas frecuente) en donde la Competencia no depende de nosotros, sino de la suerte, ese es el programa que quiero crear.
Programa para Controlar las apuestas de la Carrera de Autos.

El programa tiene que:
*) Controlar las apuestas.
*) Simular la carrera (obiamente nadie sabe quien va ha ser el ganador).

Quisiera saber como puedo hacer para que cada auto vaya avanzando a una velocidad aleatoria (no todos al mismo tiempo), quiero decir, que cada auto vaya a una velocidad (ritmo) diferente de los otros.
Entiendo que tengo que usar aleatorio, no se como hacer el panorama, he buscado en internet, y tengo una idea de hacer una Vista de Arriba hacia abajo, no perfilada.
El truco es hacer que avanze la posicion en la GUI, eso esta mas que dicho, pero ustedes me recomiendan que lo muestre en una Label? ou panel? esque no se donde mostrar la carrera, bueno cualquier consejo o ayuda, sera bienvenido.

Ojo, solo quiero consejos y ayudas, no estoy de Vago pidiendo que me lo hagan todo, yo no soy asi, pero se' que la mayoria de ustedes saben muchos trucos y Librerias o ya han hecho programas parecidos, poreso Toda ayuda sera agradecida de corazon, asi sea nombres de clases ou algunos metodos.

Muchisimas gracias de antemano, por su tiempo y por la ayuda :).

 :)


Título: Re: Simular Carrera de Autos (o caballos)
Publicado por: Nakp en 9 Junio 2009, 16:17 pm
Librerías.... se utiliza un canvas y no un panel o label :P

Creo que te servirá mucho alguún tutorial de programación de juegos en java, para el manejo de sprites y esas cosas...


Título: Re: Simular Carrera de Autos (o caballos)
Publicado por: sapito169 en 10 Junio 2009, 03:47 am
un numero al azar mayor que 0 pero menor que 1

Código:
double numeroArial =Math.randon();
Systen.out.print(numero arial);

un numero al azar mayor que 1 pero menor que 10

Código:
double numeroArial =(int)(Math.randon()*9)+1.0;
Systen.out.print(numero arial);

y si quieres mas condiciones ya es tu creatividad y abilidad usando el metodo randon de la clase math que genera un nuro decimal entre 0 y 1


Título: Re: Simular Carrera de Autos (o caballos)
Publicado por: KaOs_NiGhT en 10 Junio 2009, 16:29 pm
para poder hacer que los autos se muevan en forma "aleatoria" necesitas generar numeros pseudoaleatorios, te paso el codigo que use en la materia de simulacion, con esto generas 250 numeros, que puedes ir extrayendo con un Math.random jujuju

Código
  1. double a=211;double c=13;double r=49;double m=4011;double ri=0;double num=0;
  2.     double ar[]=new double [250];double num2=0.0;String ar2[]=new String [250];
  3.     String cast="";
  4.     String salida="";
  5.    try
  6.    {
  7.      //rf = new RandomAccessFile("aleatorio.dat", "rw");
  8.      DataOutputStream entArch = new DataOutputStream(new FileOutputStream("aleatorio.txt"));
  9.      //RandomAccessFile entArch = new RandomAccessFile("aleatorio.txt", "rw");
  10.        for(int i=0;i<250;i++)
  11.        {
  12.            ri=(a+c*r)%m;
  13.            r = ri;
  14.            num=r/(m-1);
  15.            num = Double.parseDouble( Double.toString( num ).substring( 0 , Double.toString( num ).length()<=7? Double.toString( num ).length() : 7 ) );
  16.  
  17.            ar[i]=num;
  18.        }
  19.     for(int j=0;j<250;j++)
  20.     {
  21.      for(int k=249;k>j;k--)
  22.      {
  23.       if (ar[j]==ar[k])
  24.        {
  25.           System.exit(0);
  26.        }
  27.        else{ }
  28.      }
  29.     }
  30.      for(int z=0;z<250;z++)
  31.      {
  32.          cast=String.valueOf(ar[z]);
  33.  
  34.          while(cast.length()<7)
  35.          {
  36.             cast=cast+"0";
  37.          }
  38.          ar2[z]=cast;
  39.      }
  40.  
  41.    for (int l=0;l<250;l++)
  42.        {
  43.        entArch.writeDouble(ar[l]);
  44.        int conta=l+1;
  45.        salida +=conta+".- " + ar2[l] +"\n";
  46.        areaSalida.setText(salida);
  47.  
  48.        //System.out.println(ar[l]);
  49.        }
  50.  
  51.   //entArch.writeDouble(num);
  52.    entArch.close();
  53.    }
  54.  
  55.    catch (IOException e)
  56.    {
  57.      System.out.println ("Error de E/S parte 1:\n"+e.getMessage());
  58.    }
  59.  
  60.    //generar.generar_numeros();
  61. }//GEN-LAST:event_jButton2ActionPerformed
haber si le entiendes  :silbar: