Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: SantiOkumura en Julio 17, 2017, 11:19:48 PM

Título: como hago para comprobar si un objeto NO existe??
Publicado por: SantiOkumura en Julio 17, 2017, 11:19:48 PM
eh estado probando de todo pero no funciona...
Quiero hacer que cuando el objeto1 se destruya el objeto2 tambien se destruya, pero el objeto1 al desaparecer deja 3 objetos (un objeto1 y dos objeto2), cada vez que le pongo que se destruya al objeto al destruirse el objeto1 simplemente no aparece el 2.
Quiero crear una especie de adivinador
tienes tres objetos y 1 es el correcto, cuando tocas el correcto los otros desaparecen peeeero aparecen tres nuevos para volver a adivinar.

espero que me entiendan  :-[
Título: Re:como hago para comprobar si un objeto NO existe??
Publicado por: Zapdos43 en Julio 18, 2017, 12:45:45 AM
Para comprobar si existe un objeto en la room se usa:
if (instance_exists(nombre_del_objeto))
{
// acciones aquí
}

También puedes usar:
if (instance_number(nombre_del_objeto) < 1) // si hay cero instancias del objeto indicado...
{
// hacer algo
}
Título: Re:como hago para comprobar si un objeto NO existe??
Publicado por: rpgamer97 en Julio 18, 2017, 02:56:48 AM
Estoy de acuerdo con Zapdos43 y yo te recomendaría también esta manera para comprobar que el objeto no existe, que es la que yo uso, según mi visión con este codigo colocando 3 variables correcto_1,correcto_2,correcto_3 en cada objeto, haces que una al azar o como tu elijas sea la correcta, y si no lo es el objeto se destruye

///En este caso seria que el objeto obj_2 es incorrecto
correcto_1 = false //Debe ir en obj_1
correcto_2 = false //Debe ir en obj_2
correcto_3 = false //Debe ir en obj_3
if (correcto_1 == true or correcto_3 == true)
{
instance_destroy() //Esta variable destruye los objetos incorrectos
}

Si logras mejorarlo y combinarlo con un random creo te puede servir
Título: Re:como hago para comprobar si un objeto NO existe??
Publicado por: SantiOkumura en Julio 20, 2017, 04:38:11 AM
Cita de: rpgamer97 en Julio 18, 2017, 02:56:48 AM
Estoy de acuerdo con Zapdos43 y yo te recomendaría también esta manera para comprobar que el objeto no existe, que es la que yo uso, según mi visión con este codigo colocando 3 variables correcto_1,correcto_2,correcto_3 en cada objeto, haces que una al azar o como tu elijas sea la correcta, y si no lo es el objeto se destruye

///En este caso seria que el objeto obj_2 es incorrecto
correcto_1 = false //Debe ir en obj_1
correcto_2 = false //Debe ir en obj_2
correcto_3 = false //Debe ir en obj_3
if (correcto_1 == true or correcto_3 == true)
{
instance_destroy() //Esta variable destruye los objetos incorrectos
}

Si logras mejorarlo y combinarlo con un random creo te puede servir

me explicarias porque el solo poner el instance_destroy en el if se destruyen todos los objetos, la verdad no termino de comprender  :-[ :-[
Título: Re:como hago para comprobar si un objeto NO existe??
Publicado por: rpgamer97 en Julio 20, 2017, 06:57:54 AM
En cada objeto pones el codigo segun si alguno de los otros 2 objetos son verdaderos, y el instance_destroy() solo destruye el objeto donde lo pones, osea no puede destruir otros objetos, es como dijo alguien una función de "suicidio", porque la debes poner en el objeto que quieres se destruya
Título: Re:como hago para comprobar si un objeto NO existe??
Publicado por: Zapdos43 en Julio 20, 2017, 12:45:45 PM
Te propongo esta manera de crear tus 3 cofres o tesoros:
Necesitas 2 objetos:

Un objeto que controlará la creación de los cofres, llamémoslo "controlador". Tiene los siguientes eventos:
EVENTO CREATE:
otra_ronda = false; // para iniciar otra ronda de cofres

a = instance_create(200, 200, cofre); // creamos el primer cofre en la coordenada 200, 200
a.acierto = choose(false,true); // acierto pude ser true o false

b = instance_create(264, 200, cofre); // segundo cofre en la coordenada 264, 200
if (a.acierto) // si el cofre "a" tiene acierto = true
{
    b.acierto = false; // acierto es falso
}
else // de lo contrario...
{
    b.acierto = choose(true, false); // acierto puede ser true o false
}

c = instance_create(328, 200, cofre); // tercer cofre en coordenada 328, 200
if !(a.acierto) && !(b.acierto) // si el acierto en los cofres "a" y "b" es falso
{
    c.acierto = true; // este cofre tiene acierto = true
}
else // de lo contrario...
{
    c.acierto = false; // acierto es falso
}

EVENTO STEP:
if (otra_ronda) // Cuando otra_ronda es true
{
    with(cofre) { instance_destroy();}
   
    a = instance_create(200, 200, cofre);
    a.acierto = choose(false,true);
   
    b = instance_create(264, 200, cofre);
    if (a.acierto)
    {
        b.acierto = false;
    }
    else
    {
        b.acierto = choose(true, false);
    }
   
    c = instance_create(328, 200, cofre);
    if !(a.acierto) && !(b.acierto)
    {
        c.acierto = true;
    }
    else
    {
        c.acierto = false;
    }

   
    otra_ronda = false; // una vez creado los nuevos cofres, desactivar otra ronda 
}

Luego creamos el objeto Cofre. Llamémoslo "cofre". Tiene los siguientes eventos:
EVENTO CREATE:
acierto = false;

EVENTO LEFT PRESSED. ( O en cualquier evento donde interaccionas con los cofres, yo lo haré haciendo clic con el botón izquierdo del mouse)
if (acierto) // si acierto es true
{
    show_message_async("CORRECTO");
    controlador.otra_ronda = true; // Nota: escribe el nombre del objeto controlador respetando mayúsculas y minúsculas. En mi caso mi objeto Controlador se llama "controlador".
}
else
{
    show_message_async("MALA SUERTE");
    controlador.otra_ronda = true;
}