Hola amigos ;D una duda...
C?mo deber?a hacer para obtener una variable de varias instancias de un mismo objetos?
por ejemplo: tengo varias instancias del objeto persona, pero cada uno tiene un nombre distinto, quiero que cada persona tenga un nombre diferente por eso necesito obtener los nombres de las instancias as? no se repiten los nombres.
algo as? como "si el nombre de otra persona es igual al mio, yo cambio mi nombre".
Espero me hayan entendido :-[

#1 Noviembre 20, 2010, 07:20:03 PM Ultima modificación: Noviembre 20, 2010, 08:05:46 PM por Wadk
[gml]var _nombre, _nombres;
_nombres = 0;
with (objPersona){
    _nombre[_nombres, 0] = id;
    _nombre[_nombres, 1] = nombre;
    _nombres += 1;
}[/gml]
?As??
Te quedar?a un array llamado "_nombre" con el tama?o indicado por "_nombres" que contiene el id y el nombre de cada persona. Creo :P
Vim.

pero creo que ella quiere hacer que se obtenga el nombre de todas las instancias desde otro objeto. yo lo haria as?

[gml]
var nombre;
for (i=0;i<instance_number(objeto);i+=1)
{nombre=instance_find(objeto,i).variable_nombre}[/gml]

as? obtienes en el array nombre los nombres de todas las instancias objeto, donde dice variable_nombre es el nombre de la variable que es el nombre de objeto0

Mi c?digo hace lo mismo, y un poco m?s (tambi?n guarda los id de cada instancia).
Vim.

gracias por responder  :)
entend? mejor el de brunozxz  :-[
pero tengo un problema... cuando comparo si los nombres son iguales , no deja de generarlos
us? este codigo:
[gml]
var nombres;
for (i=0;i<instance_number(personas);i+=1)
{
nombre=instance_find(personas,i).nombre_o;

if (nombre_o == nombre)
  if (sexo == "H")  // si es hombre relije un nombre de hombre
   nombre = nombres_h[floor(random(10))];
   else // sino uno de mujer
   nombre = nombres_m[floor(random(10))];
}
[/gml]
los nombres estan agrupados as?
[gml]
// nombres para los hombres
nombres_h[0] = "Carlos";
nombres_h[1] = "Juan";
nombres_h[2] = "Jose";
nombres_h[3] = "Adrian";
nombres_h[4] = "Damian";
nombres_h[5] = "Fabian";
nombres_h[6] = "Pancho";
nombres_h[7] = "Daniel";
nombres_h[8] = "Martin";
nombres_h[9] = "Julio";
// nombres para los mujeres
nombres_m[0] = "Carla";
nombres_m[1] = "Juana";
nombres_m[2] = "Josefina";
nombres_m[3] = "Adriana";
nombres_m[4] = "Laura";
nombres_m[5] = "Maria";
nombres_m[6] = "Pancha";
nombres_m[7] = "Daniela";
nombres_m[8] = "Martina";
nombres_m[9] = "Julia";
[/gml]

en donde est? el problema?  ???

Que hace "nombre_o" y al inicio escribiste "var nombres" cuando deber?a ir "var nombre"

P.D:Wadk la primera vez que le? tu c?digo que pens? que hacia otra cosa (NO dir? que) :D

#6 Noviembre 20, 2010, 09:12:42 PM Ultima modificación: Noviembre 20, 2010, 09:15:14 PM por Wadk
@brunoxzx: Uuuh, que secretismo XD.

@Silver_light: Te dejo un c?digo basado en el de brunoxzx que hace lo que quer?s, bien comentado para que se entienda:
[gml]var nombre, nombres, persona, loop;

// Primero guardamos todos los nombres.
for (i = 0; i < instance_number(personas); i += 1){
    nombre = instance_find(personas, i).nombre;
}
// Y guardamos el n?mero total de nombres.
nombres = i;

loop = true;
while (loop){
    loop = false;
    /*
     * Volvemos a loopear todas las personas, esta vez para buscar
     * nombres repetidos.
     */
    for (i = 0; i < instance_number(personas); i += 1){
        // Guardamos el id de la persona.
        persona = instance_find(personas, i);
       
        // Loopeamos todos los nombres que guardamos antes.
        for (j = 0; j < nombres; j += 1){
            /*
             * Si el nombre de la persona actual coincide con el
             * nombre actual, y el nombre actual es de otra
             * persona...
             */
            if (persona.nombre == nombre[j] && i != j){
                /*
                 * Primero ponemos loop en true para que el while
                 * se repita.
                 */
                loop = true;
                // Cambiamos el nombre de la persona.
                if (persona.sexo == "H"){
                    persona.nombre = nombres_h[floor(random(10))];
                }else{
                    persona.nombre = nombres_m[floor(random(10))];
                }
                // Y actualizamos el array de nombres.
                nombre = persona.nombre;
            }
        }
    }
    /*
     * Llegado este punto, si no se encontraron nombres iguales,
     * loop deber?a ser false, por lo que termina la ejecuci?n
     * del while. De lo contrario se vuelven a verificar los
     * nombres una vez m?s.
     */
}[/gml]

Por cierto, si hay demasiadas personas como para ponerle un nombre ?nico a todas, el juego se trancar?a.
Vim.

Haaa  :D
Muchisimas gracias Wadk, hace exactamente lo que quieria.

Gracias a los dos por resoponder :)