Hola:

Con la tecla CONTROL seis objetos son creados, cada uno con 10 subim?genes. Desde luego que s?lo una de ellas se muestra XD. Una de ellas quiero que, si saliere en uno de los objetos, que ya no se repita en uno de los otros 5.

Repito: ?C?mo hago posible que de los 6 objetos iguales si una subimagen sale una vez, que ella no se repita) Ojo todas las dem?s se pueden repetir.

La que no debe aparecer m?s de una vez es obj1.image_index=10

Ayuda por favor, por su amabilidad.

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

Suponiendo que la subimagen que no queres que se repita sea la ultima (si no es la ultima ponela al final y listo  :))

En el evento key press de control:
[gml]
maxSubimagen = 10
for (i=0; i<6; i+=1) {
    idx = instance_create(obj_tipo,x,y);
    idx.image_single = round(maxSubimagen*random())
    if ( idx.image_single == 10) {
        maxSubimagen-=1
    }
}[/gml]

Perdon si hay erroes de sintaxis  :-[

Saludos!

Cita de: Tyranus en Noviembre 24, 2010, 04:24:34 PM
Suponiendo que la subimagen que no queres que se repita sea la ultima (si no es la ultima ponela al final y listo  :))

En el evento key press de control:
[gml]
maxSubimagen = 10
for (i=0; i<6; i+=1) {
    idx = instance_create(obj_tipo,x,y);
    idx.image_single = round(maxSubimagen*random())
    if ( idx.image_single == 10) {
        maxSubimagen-=1
    }
}[/gml]

Perdon si hay erroes de sintaxis  :-[

Saludos!


Bueno Tyranus, lo que no me cuadra son dos cosas: donde dice obj_tipo,x,y ?qu? esperas que yo ponga? y y otra cosa en random() hay que meter algo que pongo?

Gracias, espero tu apoyo.
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

obj_tipo es el objeto que vos queres crear.
"x", e "y" indican la posicion en que queres que se creen los objetos.

Si por ejemplo queres que se creen uno al lado del otro podes cambiar esa linea por esta:
[gml]
idx = instance_create(obj_tipo,x+i*separacion,y)
[/gml]

donde separacion es la separacion en pixeles que queres que tengan los objetos (Los objetos se van a crear a partir del lugar en que esta el objeto que los crea)

No me acordaba que random llevara un parametro. En ese caso pasale 1 como parametro.

Cualquier cosa segui preguntando :)

Cita de: Tyranus en Noviembre 24, 2010, 08:00:41 PM
obj_tipo es el objeto que vos queres crear.
"x", e "y" indican la posicion en que queres que se creen los objetos.

Si por ejemplo queres que se creen uno al lado del otro podes cambiar esa linea por esta:
[gml]
idx = instance_create(obj_tipo,x+i*separacion,y)
[/gml]

donde separacion es la separacion en pixeles que queres que tengan los objetos (Los objetos se van a crear a partir del lugar en que esta el objeto que los crea)

No me acordaba que random llevara un parametro. En ese caso pasale 1 como parametro.

Cualquier cosa segui preguntando :)

Gracias Tyranus. Perdona mi molestadera, pero talvez hay una confusi?n leve: yo ya tengo programado tirar los 6 objetos, es decir no crear? uno nuevo, la subimagen de la que hablamos ya est? dentro de cada uno de ellos, es la subimagen #11.

No puedo usar instance_create(x,y,object) porque me crear?a nuevos objetos, solo quiero manipular que la imagen 11 nunca salga mas de una vez. :-[

Espero que me puedas reorientar tu ayuda. Gracias
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

#5 Noviembre 24, 2010, 11:13:04 PM Ultima modificación: Noviembre 24, 2010, 11:15:50 PM por Tyranus
mm.. ya veo. Igualmente la solucion sirve, aqui te explico un poco m?s como adaptarlo para el uso que necesites.

Crea un script llamada asignarSubImagen:

[gml]
   if !variable_global_exits("maxSubimagen") {
       global.maxSubimagen= 11 // si no existe la variable la declara.
   }
   argument0.image_single = round(maxSubimagen*random(1))
   if ( argument0.image_single == 11) {
       global.maxSubimagen-=1
   }
[/gml]

En el evento create de cada objeto (si es un unico objeto ponelo solo en ese):
[gml]asignarSubImagen(id)[/gml]

En el evento room_start tenes que poner global.maxSubImagen = 11, por si la reinicias.

No hago un ejemplo porque no tengi ni instalado GM :P

#6 Noviembre 25, 2010, 12:12:11 AM Ultima modificación: Noviembre 25, 2010, 12:24:45 AM por kaliman777

 
[gml]global.maxSubImagen = 11[/gml]


Esta funci?n me crea un BUG y hace que siempre los objetos tiren la subimagen 0. Lo que hice fue quitarla de cada objeto.

Por lo dem?s, funciona. Aunque a veces me tira m?s de una vez la subimagen 11. Pero fue una vez de 50 tiradas.

Gracias brother. Creo que hiciste suiciente por mi juego y gracias de nuevo. Ya me siento m?s realizado, a poner score ahora!!!
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.

?Por qu? no as??
[gml]var max_subimage = argument0.image_number;
with (argument0.object_index){
    if (image_single == max_subimage){
        max_subimage -= 1;
    }
}
argument0.image_single = floor(random(max_subimage));
[/gml]

Estoy en contra de usar una variable global s?lo para esto, y todav?a m?s de usar un n?mero m?gico (11).
Vim.

Cita de: Wadk en Noviembre 25, 2010, 01:09:21 AM
?Por qu? no as??
[gml]var max_subimage = argument0.image_number;
with (argument0.object_index){
    if (image_single == max_subimage){
        max_subimage -= 1;
    }
}
argument0.image_single = floor(random(max_subimage));
[/gml]

Estoy en contra de usar una variable global s?lo para esto, y todav?a m?s de usar un n?mero m?gico (11).

La probar? y posteo el resultado m?s tarde. Un mill?n de gracias, ya que d?lares no tengo.  8)
La verdad es como la luz de una vela, que ni la oscuridad inmensa, puede opacarla.