Autor Tema: ¿La palabra clave CLONE ha desaparecido?  (Leído 1799 veces)

osk

  • Hero Member
  • *****
  • Mensajes: 516
  • Karma: 52
¿La palabra clave CLONE ha desaparecido?
« en: Septiembre 25, 2009, 04:56:47 pm »
Hola chicos.
Pues eso: he intentado probar el ejemplo que viene en la wiki pero no me reconoce el comando (mejor dicho, palabra clave). ¿Se ha retirado del lenguaje por alguna razón?
Venga, gracias.

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12749
  • Karma: 375
Re: ¿La palabra clave CLONE ha desaparecido?
« Respuesta #1 en: Septiembre 25, 2009, 11:45:58 pm »
no se ha retirado...

existe, y es nativa del engine... no depende de ningun modulo.

no se que ejemplo hay en la wiki...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 180
Re: ¿La palabra clave CLONE ha desaparecido?
« Respuesta #2 en: Septiembre 26, 2009, 12:08:31 am »
http://wiki.bennugd.org/index.php?title=Clone
yo lo he probado y tampoco va, le he insertado todos los mods y adaptado a la filosofía c pero nada, sigue diciendo que clone no es un identificador válido
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12749
  • Karma: 375
Re: ¿La palabra clave CLONE ha desaparecido?
« Respuesta #3 en: Septiembre 26, 2009, 12:44:15 am »
ese codigo esta mal, no se de donde salio que clone devuelve valor...

ejemplo funcional:

Código: [Seleccionar]
import "mod_key";
import "mod_map";
import "mod_video";
import "mod_proc";

Process Main()
Begin

    squares();

    repeat
        frame;
    until(key(_ESC));

    exit();

End

Process squares()
Private
   int advance;
Begin

    graph = new_map(5,5,16);
    map_clear(0,graph,rgb(255,0,255));
    advance = 1;

    clone
        graph = map_clone( 0, graph );
        map_clear(0,graph,rgb(255,255,255));
        advance = 2;
    end

    loop
        x += advance;
        frame;
    end
    unload_map(0,graph);

End

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12749
  • Karma: 375
Re: ¿La palabra clave CLONE ha desaparecido?
« Respuesta #4 en: Septiembre 26, 2009, 12:48:42 am »
extraido del help del div2:

Sentencia CLONE
 
 
CLONE
 <sentencia> ;
 ...
 END
 
 Esta sentencia crea un nuevo proceso idéntico al actual, con la salvedad de que las sentencias entre las palabras reservadas CLONE y END se ejecutarán únicamente en el nuevo proceso y no en el actual.
 
 Por ejemplo, si cualquier proceso del programa, con unas coordenadas (x, y) determinadas y un gráfico (graph) concreto, ejecuta la siguiente sentencia:
 
 CLONE
 x=x+100;
 END
 
 Se creará un nuevo proceso identico a él, con el mismo gráfico y los mismos valores en todas sus variables, a excepción de la coordenada x, que el nuevo proceso tendrá 100 puntos más a la derecha.
 
 Esta sentencia se utiliza para crear réplicas de un proceso, dividirlo en dos procesos (casi) iguales.
 
 Ejemplo:
PROGRAM mi_juego;
BEGIN
    // ...
    x=0;
    y=0;
    CLONE
        x=x+10;
    END
    CLONE
        y=y+10;
    END
    // ...
END


 
 
 
 En este ejemplo, las 2 sentencias CLONE crearán 3 copias del proceso principal (y no 2, como podría haberse esperado).
 
 Al ejecutarse la primera sentencia CLONE se creará un nuevo proceso, con lo que habrá 2: uno en (x=0, y=0) y otro en (x=10, y=0). Y estos dos procesos ejecutarán la segunda sentencia CLONE, el primero (el original) creando con ello un nuevo proceso en (x=0, y=10), y el segundo creará el nuevo proceso en (x=10, y=10).
 
 Para crearse únicamente 2 copias del proceso original se podría haber construido el programa, por ejemplo, de la siguiente forma:
 
 Ejemplo:
PROGRAM mi_juego;
BEGIN
    // ...
    x=0;
    y=0;
    CLONE
        x=x+10;
        CLONE
            y=y+10;
        END
    END
    // ...
END


 
 
 
 El proceso original (x=0, y=0) creará uno en (x=10, y=0) y éste, a su vez, otro en (x=10, y=10), creandose únicamente dos copias del original.
 
 Se debe, por tanto, tener mucho cuidado con el uso de la sentencia CLONE de forma secuencial o dentro de un bucle, pues se debe contar con que los primeros 'clones' pueden crear, a su vez, a nuevos 'clones'.
 
 Esta sentencia permite usarse sin poner sentencias entre las palabras CLONE y END. Pero, al menos en un principio, no parece tener mucho sentido el querer tener dos procesos idénticos, con las mismas coordenadas, el mismo gráfico y ejecutando el mismo código.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 180
Re: ¿La palabra clave CLONE ha desaparecido?
« Respuesta #5 en: Septiembre 26, 2009, 01:07:53 am »
pues ya está solventado en la wiki.
Aunque es raro, la forma anterior se parecía al fork de c en linux.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Windgate

  • Hero Member
  • *****
  • Mensajes: 2930
  • Karma: 124
    • TRINIT Asociación de Informáticos de Zaragoza
Re: ¿La palabra clave CLONE ha desaparecido?
« Respuesta #6 en: Septiembre 26, 2009, 01:17:44 am »
Joder, iba a decir lo mismo :O
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

osk

  • Hero Member
  • *****
  • Mensajes: 516
  • Karma: 52
Re: ¿La palabra clave CLONE ha desaparecido?
« Respuesta #7 en: Septiembre 26, 2009, 01:22:11 am »
Muchas gracias por todo

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12749
  • Karma: 375
Re: ¿La palabra clave CLONE ha desaparecido?
« Respuesta #8 en: Septiembre 26, 2009, 02:05:59 am »
obvio que parecia al fork de linux, pero no se quien lo puso asi, si fue alguien que se equivoco o alguien que quiso destruir el wiki...

las participaciones del wiki son con registro de usuarios?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

  • Hero Member
  • *****
  • Mensajes: 3708
  • Karma: 180
Re: ¿La palabra clave CLONE ha desaparecido?
« Respuesta #9 en: Septiembre 26, 2009, 02:49:33 am »
sí y no. :D
No te lo vas a creer, pero fuí yo el que creé la entrada en Julio de este año.
Sorry por el malentendido,mea culpa, extraje esa información de una conversación tuya anterior en la que dijiste que era como un fork y yo la tomé al pie de la letra parece ser.
http://forum.bennugd.org/index.php?topic=654.msg9481#msg9481

Lo que no entiendo es cómo que no probé el ejemplo antes. :(
« última modificación: Septiembre 26, 2009, 03:03:23 am por DCelso »
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12749
  • Karma: 375
Re: ¿La palabra clave CLONE ha desaparecido?
« Respuesta #10 en: Septiembre 26, 2009, 03:29:27 am »
bueno, yo tambien tengo parte de culpa, esas respuestas las habia hecho muy escuetas porque estaba con apuros... y no aclare que era como un fork en el sentido de la funcionalidad, pero no del uso a nivel tecnico de la misma...

gracias por la correccion y disculpas.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2