Truco Argentino

Truco Argentino

Notapor gmvsoft » Mar Nov 10, 2009 12:52 am

Hola!!! Saludo a toda la comunidad!

Les comento que el año pasado para la facultad desarrollé en C++ con SDL el clásico juego de naipes "Truco Argentino", pero no ha quedado 100% terminado como yo lo hubiese querido.

Pero bueno, los tiempos ya no me dan para seguir con el proyecto por eso decidí comentarlo acá para saber si alguien está interesado en seguirlo.

Lo que no sé (espero alguien me ayude), es cómo subir el juego acá... Ó hay que usar algún servidor externo como 4Shared??

Agradezco a LosersJuegos porque fue de este sitio de donde obtuve toda la información para utilizar SDL y no habia podido postear nada.

Bueno, sin mas, saludos!
gmvsoft
 
Mensajes: 7
Registrado: Mar Nov 10, 2009 12:43 am

Notapor hugoruscitti » Mar Nov 10, 2009 2:15 am

Hey, ¡que bueno!.

Sabes, hace algunos años habíamos intentado hacer
un juego así, pero no lo pudimos hacer por culpa de un
proyecto que no salió... así que nos quedaron varios
gráficos de cartas y personajes:

Imagen


Imagen

Si te parece buena idea, y quieres publicar el código
alguién se anime a programar... por nuestra parte
podemos poder las imágenes que tenemos. No es
mucho, pero tampoco estamos con tiempo por
acá.... ¿hay voluntarios por ahí?.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor gmvsoft » Mar Nov 10, 2009 2:59 pm

Buenísimo!

Esta misma tarde subo el juego, porque ahora estoy en el trabajo y los servidores como Megaupload están filtrados por el proxy, saludos!
gmvsoft
 
Mensajes: 7
Registrado: Mar Nov 10, 2009 12:43 am

Notapor gmvsoft » Mar Nov 10, 2009 11:23 pm

gmvsoft
 
Mensajes: 7
Registrado: Mar Nov 10, 2009 12:43 am

Notapor gmvsoft » Mié Dic 02, 2009 3:06 pm

Alguien lo probó??? Algún comentario???
gmvsoft
 
Mensajes: 7
Registrado: Mar Nov 10, 2009 12:43 am

Notapor Metalero » Dom Dic 06, 2009 4:02 am

Bueno, lo probe, y la verdad que esta, en cuanto a programacion bastante bien (por ahi le faltaria mentir un poco mas, por que casi siempre que me cantaba algo era por que estaba cargada)

La interface esta bien hecha. Lo unico que habria que agrgarle seria musica (algo tranque de fondo, y sonidos para las jugadas), y si luego se pueden hacer graficas del rival (elegir contra quien jugar entre varios "adversario" y que tengan distintas animaciones y eso, quedaria espectacular.
Metalero
 
Mensajes: 14
Registrado: Sab Oct 24, 2009 3:47 pm

Notapor gmvsoft » Mié Dic 16, 2009 12:56 pm

Claro eso es lo que primordialmente quería hacerle, una función Randomize entre algunas opciones para simular la mentira.
Pero como habrás visto, el tiempo de desarrollo fue de solo un mes y medio y YO SOLO!!! :P

La verdad lo entregué así como estaba para aprobar la materia y nunca más lo volví a tocar, es por eso que puse a disposición aquí el código; ya que cuando me tocó realizarlo no encontré ningún código de ejemplo que me pueda ayudar a desarrolarlo, fue todo desde cero!

Saludos, y espero que alguien con tiempo y ganas pueda hacer de esta versión beta, una que sea totalmente funcional y adicta ja :D
gmvsoft
 
Mensajes: 7
Registrado: Mar Nov 10, 2009 12:43 am

Notapor lacabra25 » Jue Dic 24, 2009 1:00 pm

Hola, yo ahoramismo estoy dedicando tiempo a un proyecto (que espero acabar y que no quede como otros que tengo a medias), por lo que no podria ayudar a mejorarlo ahora mismo, sino dentro de algun tiempo.No conozco el juego de el truco argentino, por lo que en otro momento con más tiempo lo mirare por google y progare el codigo para ver como funciona.
En cuanto a lo la aleatoriedad para que mienta, tengo un par de funciones que hice hace ya un tiempo, una se encarga de obtener datos aleatorios (usando malloc para reservar memoria sin inicializar y usando tanto la direccion devuelta por malloc como su valor...) y que mezcla toda la informacion que consigue obteniendo un byte (un char, la funcion es en C), esa funcion basa la aleatoriedad en que no sabemos que direcciones de memoria nos devolvera malloc ni que habia antes en ese espacio de memoria, obviamente aqui la aleatoriedad se ve influenciada por la actividad de la maquina (contra mas programas reservando y liberando memoria mas aleatorio sera el valor devuelto por esta funcion. Otra funcion se encarga de obteniendo el valor de la funcion anterior la primera vez que se llama y cada X llamadas obtener una semilla usando la funcion anterior, y a partir de ella generar pseudonumeros aleatorios, y si no recuerdo mal creo que tenia otra que obtenia varios valores aleatorios con la primera funcion que os he
y los mezclaba operando con ellos en un unico byte. Y tambien tengo unas funciones con las que pasar cuatro test de aleatoriedad a la primera funcion. A causa de unos problemas con la grafica estoy durante unas semanas solo podiendo usar el ordenador desde terminal (completamente a texto) y no se como con emacs podria copiar esas funciones y con lynx pegarlas aqui, por lo que si quieres, cuando solucione los problemas de grafica que tengo puedo copiarte aqui esas funciones (por si alguien va a empezar a mejorar el codigo) o mandartelas por correo electronico (eso si gmail me permite adjuntar archivos con lynx, que aun no lo he probado).
Como he dicho, no conozco el juego del truco argentino, pero se podria tambien intentar hacer un algoritmo que tenga en cuenta el estado del juego (quien va ganando, las cartas que tiene....) y unas variables que tengan un valor diferente segun el jugador (estoy refiriendome al ordenador, no al jugador humano) (estos valores definirian si es un jugador agresivo o defensivo, si es de los que arriesgan o no, la forma de jugar....) y tambien tenga en cuenta unas variables de valor aleatorio, de forma que devuelva como debe el ordenador de jugar (si apostar o no, si ver las apuestas o irse...), es decir, diseñar un algoritmo que decida la forma de jugar del ordenador en funcion del juego, de valores aleatorios, y de unas valores que variaran usando algoritmos geneticos. Esto ultimo es algo bastante ambicioso, pero no creo que sea imposible. Se podria emepzar por añadir aleatoriedad, y ir mirando el resto segun se avance.
Solo unas preguntas ¿el codigo es libre?, ¿esta bajo GPL, o bajo que licencia?, has comentado que lo hicistes como trabajo para aprobar la asignatura ¿la universidad o centro donde estudias no obliga a cederles el codigo programado? y en caso de que obliguen ¿te dejan publicarlo como codigo libre?
Esto lo pregunto por que aun no he podido mirar el codigo por falta de tiempo y por que si no es libre no me molestaria ni en descargarlo ni mirarlo.
Y para trabajar en ese codigo ¿que sistema de control de versiones se usara, darcs, subversion, ...?
Esta cuenta ahora a pasado a la cuenta jhg
Avatar de Usuario
lacabra25
 
Mensajes: 222
Registrado: Mié Abr 02, 2008 9:45 pm
Ubicación: Tenerife (España)

Notapor gmvsoft » Lun Dic 28, 2009 2:55 pm

Si compañero, el código es libre pero no lo puse bajo ninguna licencia (En la facultad no me prohiben nada con respecto al código, esto es Argentina :p)...

El código lo escribí todo yo desde cero y lo puse a disposición de toda la comunidad, hacé de cuenta que es tuyo ;).

Con respecto a las versiones, no fui tan prolijo en ese sentido pero está todo hecho con clases en C++ y es bastante entendible el código.

Ah, se ve muy interesante lo que tienes para ofrecer sobre números aleatorios. Si podés subi las funciones a ver si alguien tiene ganas de seguir con este proyecto.

Saludos!
gmvsoft
 
Mensajes: 7
Registrado: Mar Nov 10, 2009 12:43 am

Notapor lacabra25 » Lun Ene 11, 2010 1:18 am

El codigo del archivo .h es:
Código: Seleccionar todo
/*devuelve un byte aleatorio a partir de varios bytes aleatorios de forma que aumenta la calidad del byte aleatorio devuelto*/

unsigned char Byte_Aleatorio(void);

/*comprueba el correcto funcionamiento del generador de numeros aleatorios*/

int Comprobar_Generador_Numeros_Aleatorios(void);


El codigo del archivo .c es:
Código: Seleccionar todo
/*Genera un byte aleatorio mediante la recogida y tratamiento de bits aleatorios*/

unsigned char Byte_Aleatorio_Recogida(void);

/*comprueba si el buffer de bytes aleatorios pasa el test de monobit*/

int Test_monobit(unsigned char *buffer);

/*comprueba si el buffer de bytes aleatorios pasa el test de poker*/

int Test_poker(unsigned char *buffer);

/*comprueba si el buffer de bytes aleatorios pasa el test de runs*/

int Test_runs(unsigned char *buffer);

/*comprueba si el buffer de bytes aleatorios pasa el test de longrun*/

int Test_longrun(unsigned char *buffer);

/*pasa un buffer de bytes aleatorios por todos los tests disponibles*/

int Comprobar_Tests(void);



unsigned char Byte_Aleatorio_Recogida(void){

    /*variables para la recogida de bits aleatorios*/

    unsigned char c[32];

    unsigned int u[32];

    unsigned int b[32];

    unsigned long e;

    unsigned long *a;

    unsigned int i;

    /*variables de control*/

    unsigned long o=0;

    /*recogida de bits aleatorios y tratamiento rapido*/

    i+= ((clock() % 101) + 1);

    if(e != 0 && i != 0){

         i+= e;

         i++;

    }

    i+= ((clock() % 65000) + 3);

    a= malloc(64 * sizeof(long));

    if(a != NULL){

         for(e=0; e < 64; e++){

                  if(*(a + e) != 0){

                         o++;

                         i+= (*(a + e));

                  }

         }

         i+= o;

         free(a);

    }

    for(e=0; e < 32; e++){

             if(u[e] != 0){

                    i+= u[e];

             }

    }

    i+= ((clock() % 65000) + 3);

    for(e=0; e < 32; e++){

             if(b[e] != 0){

                    i+= b[e];

             }

    }

    o= 0;

    e= clock();

    while(o <2>= 0){

            o= (clock() - e);

    }

    i+= ((clock() % 32500) + 3);

    for(e=0; e < 32; e++){

             if(c[e] != 0){

                    i+= c[e];

             }

    }

    /*tratamiento de los bits recogidos*/

    i= i % 256;

    return (unsigned char)i;

}



/*devuelve un byte aleatorio a partir de bytes aleatorios formados por la recogida de bits aleatorios, de forma que incrementa la calidad del byte aleatorio devuelto*/

unsigned char Byte_Aleatorio(void){

         register unsigned char n, r, nr;

         n= Byte_Aleatorio_Recogida();

         r= Byte_Aleatorio_Recogida();

         r= r % 13;

         for(nr=0; nr < r; nr++){

                  n= Byte_Aleatorio_Recogida();

         }

         return n;

}



int Test_monobit(unsigned char *buffer){

   register int unos=0,i,j;

   register unsigned char ch;

       for (i=0; i<2500; i++){

             for (j=0; j<8>> (j)) & 1)) unos++;

             }

             }

             if (9725<unos && unos<10275) return 0;

             else return 1;

}



int Test_poker(unsigned char *buffer){

   int f[16];

    register int i;

   register unsigned char ch;

   register float x;

   for (i=0; i<16; i++) f[i]=0;

   for (i=0; i<2500>>4)&0xF)]++;

      f[((ch)&0xF)]++;

   }

   x=0.0;

   for (i=0; i<16; i++)

      x += f[i]*f[i];

   x = (x*16.0/5000.0)-5000.0;

   if (2.16< x && x<46.17) return 0;

   else return 1;

}



int Test_runs(unsigned char *buffer){

   register int i,j,cuenta;

   int r[6][2];

   register unsigned char ch;

   for(i=0; i<6>> (0)) & 1);

   cuenta=0;

   for (i=0; i<2500; i++) {

      for (j=0; j<8>> (j)) & 1)==ch) cuenta++;

         else {

            if(cuenta>6){

                             cuenta=6;

            }

            r[cuenta-1][ch]++;

            ch = !ch;

            cuenta=1;

         }

      }

   }

   if(cuenta>6){

                 cuenta=6;

   }

   r[cuenta-1][ch]++;

   for(i=0; i<2; i++){

      if (r[0][i]<2343>2657)   return 1;

      if (r[1][i]<1135>1365)   return 1;

      if (r[2][i]<542> 708)   return 1;

      if (r[3][i]<251> 373)   return 1;

      if (r[4][i]<111> 201)   return 1;

      if (r[5][i]<111> 201)   return 1;

   }   

   return 0;

}



int Test_longrun(unsigned char *buffer){

   register int i,j,maxc=-1,cuenta;

   register unsigned char ch;

   ch=(((*buffer) >> (0)) & 1);

   cuenta=0;

   for (i=0; i<2500; i++) {

      for (j=0; j<8>> (j)) & 1)==ch) cuenta++;

         else {

            if (cuenta>maxc) maxc=cuenta;

            ch=!ch;

            cuenta=1;

         }

      }

   }

   if (cuenta>maxc) maxc=cuenta;

   if (maxc>=26) return 1;

   else return 0;

}



int Comprobar_Tests(void){

    register int r=0, l;

    unsigned char buffer[2500];

    for(l=0; l<2500; l++){

            buffer[l]= Byte_Aleatorio();

    }

    r+= Test_longrun(&buffer[0]);

    r+= Test_runs(&buffer[0]);

    r+= Test_poker(&buffer[0]);

    r+= Test_monobit(&buffer[0]);

    return r;

}



/*comprueba el correcto funcionamiento del generador de numeros aleatorios*/

int Comprobar_Generador_Numeros_Aleatorios(void){

    register int r=0;

    while(Comprobar_Tests() != 0 && r < 6){

                            r++;

    }

    if(r < 5){

         r= 0;

    }

    return r;

}


Para ahorrar lineas en el post he saltado las lineas del comentario sobre licencia al inicio de cada uno de los archivos, pero estan bajo la licencia GPLv3, por lo que es codigo libre que podeis usar.

Estas funciones la programe cuando aun usaba w32, antes de pasarme a GNU/Linux, por lo que no podria asegurar que funcionen sin problemas en GNU/Linux, en principio deberia funcionar sin problemas. Las cree hace ya bastante tiempo, por lo que seguramente si me pongo ahora a revisarlas, tras la esperiencia que he ido adquiriendo desde cuando las programe, seguramente pueda mejorarlas (por ejemplo haciendo que obtenga datos aleatorios de más fuentes, o mejorando la aleatoriedad y rapidez de ejecucion), pero ese es el codigo tal cual lo termine hace tiempo ya, si reviso el codigo y lo mejoro (o comprueba que sea multiplataforma) os aviso de los cambios en el codigo.

Las fuentes de las que obtiene informacion aleatoria son de la memoria que se reserva sin inicializar y de el tiempo transcurrido entre diferentes partes de la funcion que se encarga de recoger los bytes aleatorios, lo cual es dependiente en parte de la velocidad del ordenador y en parte de la cantidad de procesos que se esten ejecutando y el uso de tiempo de procesamiento que estos hacen, al igual que la memoria sin inicializar es dependiente de que escribieran los programas que usaran antes esas mismas direcciones de memoria.

He de aclarar sobre la ultima funcion que realiza hasta cinco intentos de pasar los test antes de darlos como no pasados, si no recuerdo mal, por que de forma aleatoria los pasaba o no los pasaba, es decir, de cada cinco, seis o siete veces; la mitad de las veces la pasaba y la otra mitad no (no una mitad seguida que no y la otra seguida que si, sino salteados de forma aleatoria), lo mismo no pasaba el test cinco o seis veces seguidas, lo mismo otras cinco o seis veces seguidas los pasaba, etc, etc; y las veces que no pasara los test no es que los fallara todos, sino que unas veces no pasaba uno, otras no pasaba otro, etc, etc. Como no consegui encontrar una pauta entre las veces que pasaba todos los test y las que no, ni una pauta entre los test que fallaba cuando fallaba alguno, ni tampoco veia una pauta en los numeros que obtenia con la funcion, di el que no pasara en alguna ocasion todos los test como parte de la aleatoriedad.
Avatar de Usuario
lacabra25
 
Mensajes: 222
Registrado: Mié Abr 02, 2008 9:45 pm
Ubicación: Tenerife (España)

Notapor carlostex » Mar Ene 12, 2010 5:13 am

Que tal, existen unas funciones en c que te permiten generar números aleatorios, sin que te preocupes por el algoritmo en si.
Las funciones de encuentran en time.h y stdlib.h.

Bueno, en las primeras lineas del main, escribe la siguiente linea

Código: Seleccionar todo
srand(time(NULL));


Lo que hace es inicializar el generador de números aleatorios, en este caso el numero a partir del cual se generan los números aleatorios es time(NULL); que devuelve un numero entero muy grande.

cuando quieras generar un numero aleatorio por ejemplo del 0 al 100, escribes lo siguiente:

Código: Seleccionar todo
rand()%101;


el 101 es debido a que los números empiezan en 0, y del 0 al 100 hay 101 números incluidos ellos 2.


Con respecto a las versiones, no fui tan prolijo en ese sentido pero está todo hecho con clases en C++ y es bastante entendible el código.


El control de versiones resuelve el problema sobre donde subir tu código, que es lo que preguntabas al principio.
El Concurrent Versions System (CVS) es un sistema para poder controlar las versiones de tus códigos, mas info http://es.wikipedia.org/wiki/CVS.
En pocas palabras es un servidor en el cual puedes subir tus códigos, además de archivos como imágenes, o ejecutables, de hecho cualquier tipo de archivo.
El sistema te da una url de enlace con la cual puedes descargar una revisión de tu código a través de internet, modificarlo y volverlo a subir como una revisión nueva sin perder la anterior, todas se guardan. Realmente es algo que vale la pena aprender, te recomiendo usar SourceForge con SVN, es quizás el mas usado, además es muy fácil, yo lo uso para mis proyectos de la facultad y me ha servido mucho, pues los proyectos que me han marcado han sido por equipos y nos repartimos el trabajo, cada quien hace una parte del programa y SVN nos facilita mucho.
La pagina de SourceForge es http://sourceforge.net/ tengo un tutorial sobre SVN si te interesa pasame tu correo y te lo envio
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico

Notapor endaramiz » Mar Ene 12, 2010 10:20 pm

carlostex escribió:Que tal, existen unas funciones en c que te permiten generar números aleatorios, sin que te preocupes por el algoritmo en si.

En realidad no son números aleatorios sino pseudo-aleatorios. Aunque creo que para muy pocos juegos hacen falta números aleatorios de verdad. Y serían juegos donde hay dinero de por medio, online...


SourceForge ofrece muchas herramientas. Pero si quieres hacer alguna prueba, puedes hacerlo en Google Code. Una vez que se hizo un proyecto de un juego, en el foro, se montó en SourceForge y creo que había que esperar confirmación y todo.

Saludos.
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Notapor carlostex » Mié Ene 13, 2010 4:21 am

Pues recientemente he trabajo con sourceforge y no me ha pasado nada de eso, no se cuanto tiempo tenga que lo hayan probado, pero me ha ido de maravilla, de hecho primero empecé con google code pero no tarde mucho en cambiarme a sourceforge.

Sobre los números aleatorios, no hay manera posible que un sofware o formula matemática genere números aleatorios de verdad, para hacerlo se requiere de un hardware
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico

Notapor lacabra25 » Mié Ene 13, 2010 3:56 pm

carlostex escribió:Sobre los números aleatorios, no hay manera posible que un sofware o formula matemática genere números aleatorios de verdad, para hacerlo se requiere de un hardware


Si y no, me explico, ciertamente una formula matematica no puede generar numeros aleatorios, y un programa por no puede generar numeros aleatorios usando formulas matematicas, por lo que si una opcion es obtener numeros aleatorios por hardware, lo cual si lo puede hacer el software, pensemos que el software que todos los dias ejecutamos se esta ejecutando sobre hardware el cual perfectamente puede usarse para obtener datos aleatorios, por ejemplo, una persona no teclea siempre a la misma velocidad (no somos tan perfectos), y si se pide al usuario que pulse teclas aleatoriamente se supone que no todo el mundo pulsara las mismas teclas en el mismo orden, con el raton un tnato de lo mismo, no somos lo suficientemente precisos para mover el raton de forma totalmente precisa, seguramente si nos pidieran que dejaramos el raton en unas coordenadas exactas nos costaria un poco, y es dificil que todas las personas a las que le pidas que muevan el raton aleatoriamente lo hagan igual. Esto tambien lo podemos aplicar al procesador, todos los ordenadores no tienen el mismo procesador, la misma placa, la misma memoria, etc, etc, por lo que todos los ordenadores no funcionan a la misma velocidad, y esto como ademas es influenciado por los programas que esten ejecutandose simultaneamente mas aleatorio que es la velocidad de procesamiento en un mismo ordenador en funcion de que este haciendo el usuario, de si el sistema esta ejecutando algun demonio, etc, etc. Una tarjeta de audio con entrada (ya sea de microfono o de entrada de audio) tambien nos puede dar datos aleatorios, incluso aunque no tuviesen nada conectado nos pueden proporcionar ruido (muy bajo por no haber nada conectado, pero puede llegar a darnos algo de ruido). La memoria no se salva de esto, la memoria puede verse modificada de forma aleatoria por motivos que pueden ir desde la electrostatica hasta los rayos cosmicos procedentes del espacio (de ahi que la mayoria incorporen un sistema de deteccion de fallos para que la parte de la memoria que este siendo usada no se vea afectada), pero incluso sin tener en cuenta eso no podemos olvidar que en un ordenador, desde que se inicia la memoria esta siendo requerida y liberada continuamente, con lo que en ella va quedando 'basura' (por llamarla de algun modo), es por ello que se recomienda inicializar las variables en C al declararlas, para evitar errores por no inicializarlas que puedan llevar al programa a un comportamiento inesperado e imprevisible, si no inicializamos las variables podemos reservar memoria y tener acceso a dicha 'basura' aprovechandola como datos aleatorios. Una tarjeta de red si se puede colocar en modo monitor (no todas lo permiten, depende del chip que lleven si no me equivoco) puede usarse para recivir datos que en realidad no estan dirigidos a nosotros, sino que simplemente circulan por la red a la que estemos conectados, por lo que los podemos aprovechar como datos aleatorios, incluso podriamos usar como datos aleatorios la hora de envio del paquete y de recpecion. Obviamente, si todos los datos aleatorios que podeamos obtener los juntamos en un unico numero aleatorio, su aleatoriedad es mayor.

Por lo que, en definitiva si se pueden generar numeros aleatorios por software aprovechando el hardware sobre el que funciona el software, e incluso aprovechando que el usuario es humano, no tiene una precision exacta y que puede realizar acciones aleatorias.

Obviamente las fuentes con mayor entriopia (y por tanto con mejores datos aleatorios) son las de entrada y salida (es decir, la memoria sin inicializar se puede usar, pero contiene mayor entriopia por lo que conseguimos mas numeros aleatorios con menos trabajo de dispositivos de entrada y salida), y entre los de entrada y salida son mejores para los numeros aleatorios los que den entrada del usuario o del entorno donde se encuentre el ordenador (teclado, raton, microfonos y tarjetas de sonido, webcams, etc, etc, incluso turbulencias de aire en una unidad de disco podria darnos informacion aleatoria) ya que por ejemplo los datos recogidos de una red a la que estemos conectados son tambien accesibles a otros ordenadores conectados en la red.

Tambien se pueden obtener numeros aleatorios por hardware especifico, que es a lo que te referias si no me equivoco, como contadores geiger, efectos cuanticos en semiconductores, etc, etc. Pero estos son solo otra fuente de numeros aleatorios, pero el hardware que cualquier ordenador normal y corriente tiene tambien es igualmente valido para conseguir numeros aleatorios, por ejemplo, PGP obtiene datos aleatorios de el tiempo entre pulsaciones del teclado (no se si GPG hara lo mismo o usara otros metodos).

En una web sobre matematicas tratan en un articulo las fuentes de verdaderos numeros aleatorios http://www.matematicas.net/paraiso/cripto.php?id=aleator2 que es el articulo que lei para escribir en su momento las funciones que escribi en una respuesta anterior en este tema, seguramente las funciones puedan mejorarse para que en lugar de usar como unicas fuentes de numeros aleatorios la diferencia de tiempo entre distintas partes de la funcion (basandose en la aleatoriedad de la velocidad del ordenador) y la memoria no inicializada, se podria mejorar para pedir al usuario que pulse teclas aleatorias durante unos segundos, u otras de las posibles fuentes de numeros aleatorios. Pero aunque solo usen dos fuentes de numeros aleatorios y puedan (y deberia cuando tenga tiempo) mejorarse funcionan mejor que rand y srand, que como ya comento endaramiz solo da numeros pseudo-aleatorios. Ademas de las fuentes de numeros aleatorios, una buena funcion hash con la que obtener un solo numero aleatorio de todos los obtenidos por las diversas fuentes ayuda a mejorar la 'calidad' de los numeros aleatorios.
Avatar de Usuario
lacabra25
 
Mensajes: 222
Registrado: Mié Abr 02, 2008 9:45 pm
Ubicación: Tenerife (España)

Truco Argentino Nueva Versión

Notapor gmvsoft » Mié Ene 05, 2011 12:39 am

Hola gente tanto tiempo!

Hace unos meses me puse a ver el código nuevamente y decidí arreglarlo un poco ya que no está muy legible para los demás. Entre las modificaciones agregué un archivo con constantes que identifican entre otras cosas los valores de cada naipe.

En cuanto a la funcionalidad, sigue siendo la misma (con los mismos bugs :p), solo corregí el código en cuanto a la mejor lectura.

Aquí les dejo el link con la versión 1.1
http://www.megaupload.com/?d=2AFCTOWN

Un abrazo grande!
Slds!
gmvsoft
 
Mensajes: 7
Registrado: Mar Nov 10, 2009 12:43 am

Re: Truco Argentino

Notapor guilledo24 » Lun Sep 24, 2012 2:49 pm

Hola, estaba leyendo tu post y estoy muy interesando en ver tu código porque estoy realizando un trabajo para la facultad tambien. Me lo podrías mandar o subirlo nuevamente porfavor, ya que megaupload no existe mas.
Espero respuestas, gracias!
Saludos
guilledo24
 
Mensajes: 1
Registrado: Lun Sep 24, 2012 2:43 pm


Volver a Videojuegos

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 2 invitados

cron