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.
no se ha retirado...
existe, y es nativa del engine... no depende de ningun modulo.
no se que ejemplo hay en la wiki...
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
ese codigo esta mal, no se de donde salio que clone devuelve valor...
ejemplo funcional:
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
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.
pues ya está solventado en la wiki.
Aunque es raro, la forma anterior se parecía al fork de c en linux.
Joder, iba a decir lo mismo :O
Muchas gracias por todo
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?
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. :(
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.