Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: sulcan en Julio 02, 2011, 04:40:46 AM

Título: ?Como seleccionar la mitad de las instancias?
Publicado por: sulcan en Julio 02, 2011, 04:40:46 AM
hola, alguna idea de como hacer para seleccionar solo la mitad de las instancias de un objeto?
Título: Re: ?Como seleccionar la mitad de las instancias?
Publicado por: Ciberman en Julio 02, 2011, 04:58:00 AM
hay varias formas, si con seleccionar te refieres meter sus Ids en un array, se podr?a hacer asi:
[gml]
//argument0 id del objeto.
//return c: tama?o del array.
// almacena la mitad de los Ids en el array[c]
var a,c; a=0; c=0;
for(i=0;i<=instance_number(argument0);i+=1;)
{
a=!a;
if a { array[c]=instance_find(argument0,i+1); c+=1;}
}
return c;
[/gml]
no lo prob?, pero deber?a de funcionar...
Título: Re: ?Como seleccionar la mitad de las instancias?
Publicado por: brunoxzx en Julio 02, 2011, 05:09:10 AM
Seleccionar? no entiendo a que te refieres con eso.

Si a lo que te refieres es a que quieres aplicar un c?digo a la mitad de las instancias de un objeto, lo ?nico que debes de hacer es esto.

[GML]for(i=0;i<(instance_number(objeto) div 2);i+=1){
with(instance_find(objeto,i)){
//c?digo
}
}[/GML]

Edit:al parecer escribieron antes que yo
Título: Re: ?Como seleccionar la mitad de las instancias?
Publicado por: Ciberman en Julio 02, 2011, 05:12:38 AM
perdon brunoxzx,
pero el codigo no creo que funcione, estar?as haciendo si es menor a 0 o 1 en caso de que sea par o impar...
en su lugar creo que ser?a (aparte hay una coma en lugar de un punto y coma...
[gml]
for(i=0;i<floor(instance_numbert(objeto)/2);i+=1;){
//c?digo
}
[/gml]
Título: Re: ?Como seleccionar la mitad de las instancias?
Publicado por: Wadk en Julio 02, 2011, 08:57:46 AM
Yo lo har?a as?:
[gml]ids = 0;
n = floor(instance_number(objeto) / 2);
var i = 0;
with (objeto) {
    if (i < other.n) {
        other.ids = id;
        i += 1;
    }
}[/gml]
"ids" es un array de tama?o "n" que contiene los ID de la mitad de las instancias de "objeto".

Podr?as probar esto, tambi?n:
[gml]ids = 0;
n = floor(instance_number(objeto) / 2);
var i = 0;
with (objeto) {
    other.ids = id;
    i += 1;
    if (i == other.n) {
        break;
    }
}[/gml]
T?cnicamente un with es un loop, pero no s? si el break funciona en un with. Si funciona, el c?digo ser?a m?s o menos el doble de r?pido.
Título: Re: ?Como seleccionar la mitad de las instancias?
Publicado por: brunoxzx en Julio 03, 2011, 04:13:39 AM
@ciberman: Con forme a lo de que me faltaba el punto y coma, fue por que tenia mucha prisa en ese momento, de echo ni siquiera alcance a leer lo que escribiste, de cualquier modo ya correg? eso y otro peque?o error y sobre todo lo dem?s que dijiste la verdad no lo entend? muy bien XD.
Título: Re: ?Como seleccionar la mitad de las instancias?
Publicado por: sulcan en Julio 03, 2011, 11:07:07 PM
Gracias a todos por la respuesta, olvide aclarar que no deseaba utilizar  arreglos ya son muchas las instancias que plano utilizar,  y que deseo poder hacer grupos de grupos pero me dieron ideas de como lograrlo, solo tengo que modificar un poco, muchas gracias :D.
Título: Re: ?Como seleccionar la mitad de las instancias?
Publicado por: Ciberman en Julio 05, 2011, 12:35:42 AM
perdon pero la intriga me carcome, a que te refieres con grupos de grupos??
Título: Re: ?Como seleccionar la mitad de las instancias?
Publicado por: sulcan en Julio 05, 2011, 07:36:19 PM
Claro, me refiero a que una vez que las instancias se separaran por la mitad, una de las mitades pueda ser dividida en una mitad de nuevo y de nuevo, es decir hacer grupos que a su vez se dividan en grupos.  XD