Hola apreciados amigos (as):

Tengo un objeto o_bola cuyo sprite cuenta con 10 subim?genes. 9 rojas y una blanca(la ?ltima subimagen).
1. En CREATE: image_index=random(10) image_speed=0
2. Con CONTROL Creo 6 instancias del objeto en una hilera. Tomando en cuenta que si en uno de ellos sale la blanca (la ?ltima subimagen), que en los siguientes instancias, el image_index no llegue a 10, solo cicle 9.

?C?mo logro con una variable o m?s que en ese momento image_index pase a ser de 9 y no de 10? Para evitar que la bola blanca no salga en esa tirada m?s de una vez.

He tratado pero no me funciona.

Gacais espero su ayuda.
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

#1 Julio 21, 2011, 07:07:25 PM Ultima modificación: Julio 21, 2011, 07:19:28 PM por Daz
Lo que podr?as hacer es que, cada vez que vas a crear un objeto, comprobar si ya hay alguno de ellos con image_index=10;

Create:
[gml]
cuenta=0;
[/gml]

Donde crees las bolas:
[gml]
repeat(6) /*Hacemos el proceso 6 veces, es decir, el n?mero de bolas que quieres que salgan*/
{
/*Contamos si ya existe alguna blanca*/
with (objeto_bola) {
 if (image_index = 10){
   /*Ya existe alguna blanca*/
   cuenta=1;
 }
}

/*Creamos las bolas*/
if (cuenta=1)
{
 (instance_create(0,0,objeto_bola)).image_index=floor(random(10));
}
else
{
 (instance_create(0,0,objeto_bola)).image_index=floor(random(11));
}

cuenta=0;
}
[/gml]

No puedo probarlo ya que no estoy en Windows, pero espero que captes la idea :)
w f t g+

Hola, que tal!!

La respuesta anterior es una muy buena forma de realizar lo que deseas. Yo solo te tengo un par de observaciones, no se si las hayas considerado:

1.  Si tu total de imagenes es de 10, entonces dichas imagenes estan numeradas del 0 al 9.

2.  La funcion random te entrega numeros con decimales.  

En algunas ocasiones, sobre todo cuando hacia uso del evento draw, si ponia image_index = 4.5; (por ejemplo), yo esperaba que me mostrara la imagen 4 y en realidad me mostraba la 5.  Quizas es lo que te este ocurriendo a ti. .

Podrias tambien intentar reducir el random a 8.5 por ejemplo y observar que es lo que sucede.   

Saludos!!

Gracias por los c?digos Daz. Estoy poni?ndolos en pr?ctica. Estoy muy seguro de que funcionar?n, de lo contrario, te lo har? saber y qu? fall?.

Tienes raz?n Zigma, lo que acostumbro a usar es floor(random(x)) o ceil(random(x)) as? me redondea abajo o arriba seg?n yo quiera.

Gracias de nuevo y aviso m?s tarde. :D
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

Hola, puedes usar algo como en tu evento que genera tus instancias:

[gml]var blanca;
blanca=false;
repeat(6)
    {
    var azar;
    azar=floor(random(10-blanca));
    if(azar==9)
        {
        blanca=true;
        }
    instance_create(posicion_x,posicion_y,objeto_tal).image_index=azar;
    }[/gml]

Saludos.
Saludos Cordiales!!!

#5 Julio 22, 2011, 02:18:57 PM Ultima modificación: Julio 22, 2011, 02:21:18 PM por kaliman777
Hola amigos:

La verdad es que sus c?digos deben estar bien pero al aplicarlos en algo me falla, porque se da el caso de que salen dos bolas blancas en dos instancias diferentes. O sea, se repite. El programa no obedece la variable cuenta, talvez hay que ponerle otra condici?n, no s?. Siempre toma en cuenta todas las imagenes del objeto.

Yo pongo la variable cuenta=0 en CREATE del objeto lanzabolas y en cada alarma (cada 20 step) que crea las bolas pongo el c?digo.

Ser? que debo poner estos c?digos en otro evento?
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

Hola, como le dije a otro usuario, este ejemplo que puse en otro post hace tiempo puede servir para obtener sin repeticion una sublista dentro de una lista de palabras, objetos, rooms, etc... Saludos.

Post:
http://www.comunidadgm.org/index.php?topic=13803.msg68909#msg68909

Ejemplo:
http://www.comunidadgm.org/index.php?action=dlattach;topic=13803.0;attach=8346
Saludos Cordiales!!!

Gracias Zeit, en caso la ?nica q no quiero q se repita es una de las im?genes, las dem?s s?pueden. En tu lista, se generan n?meros no repetitivos.

Tatar? de probar cambiando el sprite_index.

Saludos
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

#8 Julio 22, 2011, 11:36:17 PM Ultima modificación: Julio 23, 2011, 04:15:12 AM por Wadk
Prob? as?:
Create:
[gml]white = false;[/gml]

Evento que crea una bola:
[gml]with (instance_create(0, 0, o_bola)) {
    image_index = floor(random(10 - other.white));
    other.white = (image_index == 9);
}[/gml]
Por supuesto, ten?s que cambiar los ceros en el instance_create por la posici?n que quieras.
Vim.

#9 Julio 23, 2011, 02:01:42 AM Ultima modificación: Julio 23, 2011, 02:19:03 AM por Zeit
Hola, aqui un ejemplo. Saludos.

Por cierto, cambien la subimagen blanca de la posicion 9 al 0 que es mas comodo y use las otras 9 subimagenes de colores en lugar de puras rojas para identificarlas.
Saludos Cordiales!!!

Gracias a ambos por ayudarme, pero a?n me falla algo: :'(
En el caso de Zeit, tu engine est? en GM 8.1, no me funka en GM8.

El c?digo de Wadk funciona si las bolas salieran de un solo, pero como cada una sale a cuenta de una alarma distinta, creo q all? es donde me falla. Las hago aparecer con alarmas porque salen de un mismo punto y se mueven a sitios diferentes cada 20 steps(es un efecto del juego que debo respetar).

Su c?digo et? bien s?lo que en cada alarma deja de valer. Pongo aqu? un simple demo para ver si me le dan el remedio, CONTROL para tirar las bolas. Gracias, es poco lo que falta. Espero me ayuden ya con el demo ac?.
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

Cita de: kaliman777 en Julio 23, 2011, 11:26:02 PM
Gracias a ambos por ayudarme, pero a?n me falla algo: :'(
En el caso de Zeit, tu engine est? en GM 8.1, no me funka en GM8.

Hola, segun yo las funciones de GM8 y GM8.1 son las mismas por lo que deberia funcionar bien. Saludos.
Saludos Cordiales!!!

Cita de: Zeit en Julio 23, 2011, 11:34:57 PM
Cita de: kaliman777 en Julio 23, 2011, 11:26:02 PM
Gracias a ambos por ayudarme, pero a?n me falla algo: :'(
En el caso de Zeit, tu engine est? en GM 8.1, no me funka en GM8.

Hola, segun yo las funciones de GM8 y GM8.1 son las mismas por lo que deberia funcionar bien. Saludos.
Pues no, porque tira un error: este archivo pertenece a una versi?n m?s reciente, baje esta versi?n para verlo. :-[
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

#13 Julio 24, 2011, 12:08:56 AM Ultima modificación: Julio 24, 2011, 12:16:26 AM por Wadk
Te dejo el ejemplo que pusiste arreglado. Mi c?digo anterior ten?a un peque?o error :P.
Adem?s lo modifiqu? para usar una sola alarma, y un solo objeto bola. Tener 6 eventos casi iguales es una locura, y tener 6 objetos iguales m?s a?n.
Los id de las bolas se van guardando en el array "ball". Si quer?s, por ejemplo, destru?r la primera bola, pod?s hacer esto:
[gml]with (ball[0]) {
   instance_destroy();
}[/gml]

Tambi?n te dejo el ejemplo de Zeit convertido a gmk, aunque no lo pude probar.
Vim.

Cita de: kaliman777 en Julio 23, 2011, 11:43:26 PM
Cita de: Zeit en Julio 23, 2011, 11:34:57 PM
Cita de: kaliman777 en Julio 23, 2011, 11:26:02 PM
Gracias a ambos por ayudarme, pero a?n me falla algo: :'(
En el caso de Zeit, tu engine est? en GM 8.1, no me funka en GM8.

Hola, segun yo las funciones de GM8 y GM8.1 son las mismas por lo que deberia funcionar bien. Saludos.
Pues no, porque tira un error: este archivo pertenece a una versi?n m?s reciente, baje esta versi?n para verlo. :-[

Hola, no se si funcione pero, si le cambias la extencion de .gm81 a .gmk??? funcionara algun backup .gb1, .gb2, etc???
Saludos Cordiales!!!