No logro hacer que mi enemigo camine en forma aleatoria, este codigo está bien? me sale error al compilar..
PROCESS enemigo1()
BEGIN
x=100;
y=100;
z=10;
graph=600;
LOOP
x = x + rand(-7,7);
y = y + rand(-7,7);
FRAME;
END
END
Empieza por quitar esa hache y luego ya vas depurando cosas menos graves.
The eagle never lost so much time as when he submitted to learn of the crow.
te falta la semilla
Simplemente por tratar de ayudar, porque nunca programé en Bennu:
- Ni si quiera nos has dicho con qué lenguaje programas. ¿Fenix? ¿Bennu?
- Tampoco nos has dicho qué error da al compilar. No somos telépatas.
- Si programas con bennu... ¿has importado la mod_rand al inicio del código?
- ¿rand() admite números negativos? Seguramente sí, pero es por estar seguros
Al contrario de lo que opina GameMaster, no creo que olvidar la semilla sea la causa de un error al compilar.
Última edición por juanvvc; 04/11/2011 a las 10:12
1 - por suerte su codigo funciona tanto en bennu como fenix.
2 - bueno no me habia fijado que le daba error al compilar, en este caso posiblemente le falte importar la 'mod_rand'
3 - rand admite numeros negativos, y la semilla es necesaria porque dependiendo del procesador, en este caso como es una wiz/caanoo, la primera ejecución le daria siempre el mismo valor si no pone la semilla.
1 - La diferencia entre fenix y bennu es que si en fenix el código que ha puesto probablemente funcione "as is", en bennu hay que importar la mod_rand o tendrá un error al compilar, que es de lo que hablamos. Si programa en Fenix entonces no es este el error y hay que buscar otras cosas.
2 - pues eso. Seguimos hablando de que tu mensaje de hace un rato despista porque no va en la dirección adecuada, y olvidarse el seed() nunca dará un error, ni en compilación ni en ejecución ni en nada.
3 - todos sabemos lo que es una semilla En DIV recuerdo que si no se ponía explícitamente, la semilla era siempre la misma (creo que 0) Así que la secuencia de números "aleatorios" era siempre la misma. Era un comportamiento deseado en DIV y Daniel Navarro lo justificó en su día, pero no sé si en Fenix/Bennu sigue siendo así. En cualquier caso, no poner una semilla no da un error en compilación ni en ejecución, así que sea como sea, es imposible que fuese ése el problema.
A lo mejor querías volver loco al pobre vassink, no lo sé
Última edición por juanvvc; 04/11/2011 a las 10:59
A ver, no es el caso, pero imaginate que queria poner una imagen random en un menu de 4 posibles, si no pone la semilla, en wiz le saldria siempre la misma, el vendria, y te diria que tenia un error, no de compilación pero en ejecución, te diria que pone rand y que le sale siempre la misma imagen....
Con lo cual hablar de errores tambien es relativo, le puedes llamar error a algo que realmente no es un error...
lo de la semilla es verdad, si no la pone el 90% (por no decir 99%) empezará con el mismo numero, e incluso al repetir repetirá con el mismo y asi segruirá una combinacion random muy repetida a la anterior...
en cuanto al codigo, como pones dentro del loop rand(-7,7); cada vez que pinte la imagen la pintará de -7 a 7 desplazada...
esto supone que el enemigo se pondrá a temblar como un loco segun los frameskip que tengas
mi consejo, en una variable llamada ''tal'' y le haces un random antes del loop, ya dentro del loop haces un x = x + tal; y/o y = y + cual; y lo que te hace es que al crear el proceso se mueve a una determinada velocidad pero constante; si eso es lo que buscas.
Si lo que buscas es temblor lo has conseguido
Bueno tienen razón la verdad no expliqué bien. Estoy usando bennu, y como nunca antes había programado, estoy leyendo el manual mas básico (Curso de Trinit). He ido paso a paso, pero al llegar al tema de los numeros aleatorios me he quedado pegado, segun yo, el código estaba bien,
Incluso despues de escribirlo varias veces, copié el código directo desde el videojuego que trae de muestra.. tampoco pasó nada.
Esto me sale...
supongo que hay algo que el manual no dice, y que yo debería saber.
Por ejemplo, ¿qué es una semilla? en el manual no lo dice, y si es necesario para que funcione el codigo, pues entonces habría que corregir el manual.
Reitero que es mi primer acercamiento a un lenguaje de programación, espero me tengan paciencia.
vale, eso solo quiere decir que has puesto en la linea 135 un rand sin tener el punto y coma al final o en el renglon anterior, solo eso
o igual le falta los datos de los parentesis, solo error de sintaxis
Dice que no encuentra la función rand().
En bennu algunas colecciones de funciones especiales y "poco usadas" tienes que importarlas antes de poder usarlas. Eso se hace con una línea al principio del programa:
Hay muchos más módulos con muchas funciones especiales. Mira aquí: http://wiki.bennugd.org/index.php?title=ModulesCódigo:import "mod_rand";
La "semilla" es literalmente eso. El ordenador es una máquina y como todas las máquinas hace siempre cálculos exactos. "Obtener un número aleatorio" en principio va en contra de lo que hacen las máquinas, porque no saben hacer cosas "aleatorias". Para ayudarle, le das un número aleatorio y a partir de ahí la máquina te saca los demás. Ese número aleatorio inicial se llama "semilla" ("seed" en inglés) Si siempre le das la misma semilla, el ordenador siempre te dará la misma secuencia de números aleatorios.
En Bennu puedes poner una semilla con el comando rand_seed(): http://wiki.bennugd.org/index.php?title=Rand_seed Como normalmente querrás números realmente aleatorios y que no se repitan cada vez que ejecutas el programa, una semilla muy usada y bastante aleatoria es el reloj del sistema. Para ello, añade una línea así al principio de tu programa (por ejemplo, después de cargar los gráficos):
Y así te aseguras de que los números aleatorios cambian cada vez que ejecutas el programa. Si quieres tener números aleatorios, pero siempre los mismos, usa esta línea con una semilla fija (puede ser el número que tú quieras):Código:rand_seed(timer());
Código:rand_seed(16533);
Última edición por juanvvc; 04/11/2011 a las 20:55
no warranty es lo que trae el software libre, imaginate que se te jode el pc y se lo reclamas al creador del software te lo paga...
un mundo perfecto
<->
en el videojuego del tema 10 vendrá, lo mas seguro, un import dll donde estará importado el modo rand
Sí que lo incluye
Mira la segunda línea del videojuego del tema 10:
(el comando "include" incluye un archivo en el código como si estuviese ahí puesto entero. Es muy útil para organizar códigos muy largos en varios archivos y no volverte loco. En este ejemplo concreto el código que incluye es tan corto que probablemente hubiese sido mejor no usarlo para no confundir a la gente)Código:INCLUDE "DLL\import.prg"; //Incluye las DLL necesarias para que todo funcione
Y el contenido del archivo "DLL\import.prg" es este:
Como ves, no solo importa la mod_rand, además importa muchas otras funciones adicionales.Código:import "mod_video"; import "mod_proc"; import "mod_map"; import "mod_key"; import "mod_rand"; import "mod_grproc";
Última edición por juanvvc; 06/11/2011 a las 13:59
Marcadores