Buenas de nuevo,
hoy estoy por dar la vara. En esta ocasión me interesa saber cual es la diferencia entre Choose y Random.
Además, quisiera saber cual sería la forma ideal para que el sprite de mi objeto se ponga aleatoriamente a través del evento create.
Un saludo y gracias de antemano por cualquier Info que podáis darme.
As
choose(x1,x2,x3) te devuelve un valor aleatorio entre los que le indicas, por ejemplo: choose(4,5,6) te devuelve 4, 5 ó 6.
random(x) te devuelve un valor aleatorio igual o menor que el que le indicas, por ejemplo: random(33) te devuelve 31.6, 2.4, etc...
hay una variante que es irandom(x) que sólo te devuleve números enteros (sin decimales)
salu2 :D
por cierto, para lo que pides al final, si quieres que el sprite coja una subimagen aleatoria, pones esto en el create event: image_single=irandom(image_number-1)
Cita de: darius en Diciembre 01, 2013, 10:27:23 PM
por cierto, para lo que pides al final, si quieres que el sprite coja una subimagen aleatoria, pones esto en el create event: image_single=irandom(image_number-1)
A modo de explicación, image_single es el número de subimagen que vamos a mostrar
Entonces queremos que la subimagen utilizada sea igual a irandom(image_number-1), que sería un número aleatorio entre 0 y el número de subimágenes que el sprite tenga. Le restamos 1 al número de subimágenes porque cuenta a la subimagen 0.
Entonces si tenemos al subimagen 0, 1, y 2, image_number devolverá 3. restamos 1 y queda 2. Entonces elegimos un número aleatorio entre 0 y 2
PD: No conocía a la variable image_single. Busqué en Google y image_single es lo mismo que image_index pero que además pone a image_speed a 0 para que no se cambie la imagen a través del tiempo. Pero también leí que es una variable que está en desuso (deprecated)
Estupenda explicación, muchas gracias a ambos.
Imaginemos el caso de que no quiero cambiar la subimagen de un sprite, sino que tengo un objeto creado al que no le he asignado sprite, y quiero asignarle un sprite aleatorio entre los 10 sprites que tengo creados.... ¿?
sprite_index=choose(sprite1, sprite2, sprite3, ..., sprite10);
Cita de: Mgbu en Diciembre 01, 2013, 10:41:50 PM
Cita de: darius en Diciembre 01, 2013, 10:27:23 PM
por cierto, para lo que pides al final, si quieres que el sprite coja una subimagen aleatoria, pones esto en el create event: image_single=irandom(image_number-1)
A modo de explicación, image_single es el número de subimagen que vamos a mostrar
Entonces queremos que la subimagen utilizada sea igual a irandom(image_number-1), que sería un número aleatorio entre 0 y el número de subimágenes que el sprite tenga. Le restamos 1 al número de subimágenes porque cuenta a la subimagen 0.
Entonces si tenemos al subimagen 0, 1, y 2, image_number devolverá 3. restamos 1 y queda 2. Entonces elegimos un número aleatorio entre 0 y 2
PD: No conocía a la variable image_single. Busqué en Google y image_single es lo mismo que image_index pero que además pone a image_speed a 0 para que no se cambie la imagen a través del tiempo. Pero también leí que es una variable que está en desuso (deprecated)
Exacto :-[ yo fui directamente al grano, pero muy buen explicado :P
Me ocurre algo con el choose que no se como solucionar.
Estoy utilizando este código en el evento create:
sprite_index = choose(carta1,carta2,carta3,carta4);
Cierto es que me coloca los sprites de las cartas de modo aleatorio, pero si me salgo del juego y entro de nuevo me las vuelve a colocar en el mismo orden aleatorio, por lo que el jugador puede aprenderse la ubicación de las cartas con solo jugar un par de veces al nivel. Alguna idea de como solucionar esto?
Un saludo!
Al principio del script (o sea, antes que uses alguna función aleatoria) usa esta instrucción:
randomize();