¿Un random funciona dentro de un for?

Started by Futu-block, May 29, 2011, 08:16:56 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Futu-block

Me está ''golviendome'' loco un proceso que tengo, para crear varios procesos dentro de un primer proceso uso un for...
[code language="bennu"]
proces tal1()
private
int v;
loop
    if (tal y tal...etc

    for (v = 1; v < 8; v++)
        tal2(rand(100,500), 300);
        frame(500);
    end
    ...
end


process tal2(x,y)
graph = etc...
[/code]

no me cuadra, siempre me crea el proceso en el mismo sitio; y eso que hay un rango de 400 pixeles...


en fin, sigo probando

Fede

¿Inicializas la semilla? Yo normalmente lo hago con time.
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

Futu-block


SplinterGU

fijate que no tengas la inicializacion de la semilla dentro de un for o dentro de algun proceso que este corriendo mientras ejecutas este otro proceso que crea los procesos con rand.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

estas creando 7 procesos en realidad...

Fede

Quote from: SplinterGU on May 29, 2011, 08:33:01 PM
fijate que no tengas la inicializacion de la semilla dentro de un for o dentro de algun proceso que este corriendo mientras ejecutas este otro proceso que crea los procesos con rand.

En otras palabras. Que a la semilla le de tiempo a inicializarse. :D
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

Futu-block

si, quiero crear siete procesos en 'x' distintas y la semilla está por el 'time' en el proceso principal, antes de la invocacion del proceso (tal1)

FreeYourMind

pon la semilla justo despues del BEGIN de programa principal, cuando defines la resolucion y solo una vez.

Fede

¿Puedes poner el trocito de código de inicialización de la semilla?
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

Futu-block

[code language="bennu"]
PROGRAM dragon;

INCLUDE "DLL/import.prg";
include "dragon/vari_glob.prg";
INCLUDE "dragon/ia_dragon.prg"; // inteligencia artificial del dragon
INCLUDE "dragon/gest_item.prg"; //gestion de items


BEGIN
   set_mode(320,240,32,mode_window);
   load_fpg("dragon/corrr.fpg");          
   fondo(); panta(); ia_draco(); arcos(); objetos();:
   rand_seed(time());
END                                  

process fondo()
begin


[/code]

asi??

Fede

No sé quien llama a tal1 pero... ¿No deberías de poner el Rand_Seed en la primera línea? Esto es, despues del Begin mismo.
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

Fede

Bueno chicos. La cama me reclama. ¡Suerte Futu! :D
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

Futu-block

juo juo juo, disfruta del catre

stop a esto, estoy probando linea por linea y probando en el juego y parece que vá perfect...
que raro :(

lo que pasaba es que le estoy metiendo en un array y le estoy haciendo una comprobacion para que no me repita ningun numero, y ese es el otro lado donde me falla

la eliminacion de sentencias o la addiccion de nuevas de una en una me está ayudando


por cierto, como se pone en un array[7] ocho numeros distintos (del uno al ocho se supone)??
estoy poniendo un for dentro del for, pero creo que me estoy rayando

FreeYourMind

el error es muy facil de ver, seteas la semilla despues de usar el rand en los procesos que llamas antes del mismo xDD

Drumpi

Quote from: Futublock on May 29, 2011, 09:00:27 PM
por cierto, como se pone en un array[7] ocho numeros distintos (del uno al ocho se supone)??
estoy poniendo un for dentro del for, pero creo que me estoy rayando

for (i=0;i<=7;i++)
    array[i]=i;
end


Respecto a lo del random, además de lo que dicen los demás, asegúrate que  no estás asignando un valor a la X de tal2 antes del FRAME;
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)