Señores, resulta que haciendo un juego por modulos, al hacer cosas faciles como ''si al pulsar un boton pasa tal y tal'' el resultado es extraño en ambos casos; si creo un proceso al ''begin o comienzo del proceso principal funciona sin problemas (lo de pulsar un boton), pero sin embargo al importar un proceso desde el principio a traves del impor, me dá ciertos problemillas...
quiero que me contrasteis si es verdad, es un fallo de bennu o por el contrario es de alguna manera es normal.
mientras tanto seguiré investigando en que grado falla... si falla
!Dios mio, voy a postear en una consulta¡ ;D
Por mi esperiencia, (muy pequeña), depende del sitio donde lo importes.
Y si encima tienes algún puntero perdido, ni te cuento.
A mi me daba errores de compilación, porque lo importaba antes de las definiciones de variables. Sólo lo puse después y ya está.
¡Y ahora que hablen los grandes! :D
punteros? todavia no se usarlos; yo no se como me salen juegos...
je je je
Que yo sepa, los punteros no han existido siempre. (Seguro que ahora viene alguien y me putea, pues cada vez que últimente estoy habriendo la voca para hablar de temás profundos, me la lian por metepatas.) ;)
Te dan mucha potencia y flexibilidad, pero también un gran peligro de inestabilidad. Por lo menos a mí.
Pero no me imagino un mundo sin punteros. Será que ya me he acostumbrado a usarlos.
Curiosa manera de programar en los tiempos en que vivimos. ;D
Por cierto, ¿has descubierto el fallo?.
Tronco, pero sube el código que si no chungo xD
Yo siempre uso módulos, el comportamiento debería ser el mismo exactamente, salvo que hayas hecho el INCLUDE en mitad del código, un INCLUDE no tiene por qué ser sobre un módulo cerrado que empiece con PROCESS y termine con su END, puede tener fragmentos de código sueltos, y si lo incluyes dentro de un BEGIN-END se ejecutaría lo que lleva dentro...
Vamos, no sé si me explico bien, lo mejor es que subas el código y lo vemos.
Sobre punteros: Son útiles, cuesta comprender cómo funcionan al principio, pero luego son algo que no se olvida :D
los punteros existen desde siempre.
curiosamente al hacer una prueba no me furula bien, asi que lo pongo aqui y lo repaso;
el programa verde con dos procesos, el del fondo (yo lo hago así por ahora) y el del jug1:
[code language="bennu"]program verde;
INCLUDE "DLL/import.prg"; //Incluye las DLL necesarias para que todo funcione
INCLUDE "prg/jug2.prg";
BEGIN
set_mode(320,240,32,mode_2xscale);
load_fpg ("image/sonic.fpg");
fondo(); jug1();
end
process fondo()
begin
x = 160;
y = 120;
graph = 1;
z = 20;
loop
if (key(_esc)) exit(); end
frame;
end
end
process jug1()
begin
x = 100;
y = 100;
z = 1;
graph = 5;
loop
if (key(_up)) y--; end
if (key(_down)) y++; end
frame;
end
end[/code]
y el proceso importado o incluido:
[code language="bennu"]process jug2()
begin
x = 300;
y = 100;
z = 1;
graph = 5;
loop
if (key(_w)) y--; end
if (key(_s)) y++; end
frame;
end
end
[/code]
lo repaso...
edito:
yolo entiendo, esta incluido pero no ''activado''
en cualquier momento del program hay que poner el
jug2();
Quote from: SplinterGU on May 09, 2010, 06:00:00 PM
los punteros existen desde siempre.
Lo sabia, lo sabia, que metía la pata. :P
¿También existian con los primeros lenguajes?
Teniendo en cuenta que los primeros lenguajes eran placas metálicas con agujeros para introducir datos, no, los punteros no han existido siempre, sólo desde que existió la necesidad de consultar valores almacenados en memoria desde distintos puntos del programa ^^U
En Basic no recuerdo haber visto punteros, pero claro, yo no llegué a profundizar en la programación de mi viejo Amstrad.
Por cierto ¿soy el único que ha leido el primer mensaje y se ha quedado con cara de haba? o.O mi no entender.
:P
Es que en vuestros niveles avanzados no entendeis consultas superfluas. :P
Traduzco: que está haciendo una cosa muy trivial, no le sale, y tiene la desfachatez de echarle la culpa al bennu. :o jua,jua,jua.
La verdad es que no veo el fallo. Me lo acabo de descargar para probarlo en el portatil de la programación.
Tardaré un poco....
¿Entonces ya está resuelto el problema?
En tu código veo que has incluido un módulo con un proceso, pero no lo has invocado, todo el código es correcto.
Probado con ligeras modificaciones de directorio, fpg e incluso activando el 2do proceso.
Funciona.
Lo que has puesto está bien, lo que importas no lo sé.
Besitos.
Edito.
He usado el último BennuPack. Te lo comento porque el primero que pillé por ahí no iba bien. Sería una versión muy antigua.
pues he seguido probandolo y no es eso presisamente, a ver si logro detectar lo que es...
Por cierto, que es exactamente un puntero?¿ si quereis decirlo
Quote from: Futublog on May 09, 2010, 07:54:58 PM
pues he seguido probandolo y no es eso presisamente, a ver si logro detectar lo que es...
Por cierto, que es exactamente un puntero?¿ si quereis decirlo
Es una forma "distinta" de pasar una variable a un proceso, de forma que no reciba simplemente una copia del valor numérico que almacena, con un puntero le das total acceso a la variable y la puede modificar.
Formalmente, la forma habitual de pasar una variable es "por valor", mientras que usando puntero la pasas "por referencia".
Un puntero es una variable como otra cualquiera, pero en lugar de almacenar un número, lo que guarda es una dirección de memoria donde está el número que quieres consultar.
Por eso hay dos formas de consultar un puntero: por el método normal (mi_puntero) obtienes la dirección de memoria, que sólo puede ser usada por otras variables tipo puntero o por funciones que los pidan en los parámetros de entrada (esos que van tras process/function y el nombre); el otro método es leyendo el contenido (*mi_puntero), lo que hace es decirle al programa "vete a esta dirección y dime qué valor hay escrito", esa dirección puede ser una variable global, una variable de otro proceso existente y, en determinados casos, un valor de otro programa distinto (digo en determinados casos porque en un pasado esto podía provocar desastres en el sistema, y se usaba para crear virus, pero ahora el acceso fuera de memoria está muy controlado (ejem)).
El tema de punteros es muy ámplio y da para muchos capítulos en cualquier tutorial de programación, es casi la mitad de la programación básica. Dominarlos cuesta mucho, pero los beneficios son muy altos, no sólo en aprovechamiento de memoria, tambien facilita añadir o quitar cosas de listas, ordenarlas...
bueno, un puntero almacena una direccion de memoria, hasta ahi venimos bien, pero tambien esa direccion de memoria es un numero.
Sí, es un número, pero no se trata como tal, al menos no en Bennu, donde siempre te va a dar error porque "se esperaba un puntero" o "se esperaba una struct/int/byte..." :P
Hasta cierto punto se puede vivir sin punteros, en el peor caso a base de LOCAL y GLOBAL se puede hacer de todo, a costa de eficiencia.
puede usarse para guardar p. ej. records en la tabla de records?¿?¿?¿
Si, puede usarse, sobre todo porque simplifica la ordenación... siempre que tengas las funciones bien implementadas. Usar listas enlazadas a la larga es repetitivo, básicamente es siempre el mismo código, cambiando la estructura nodo (cada una de las partes de dicha lista) y la función de leer datos. Pero las primeras veces cuesta muchísimo hacerlas, da muchos errores difíciles de encontrar y requiere tener la mente clara y despejada (y según mi experiencia, el 85% de las veces, papel y boli a mano).
Pero si es una tabla de records estandar no es necesario: el número de posiciones es fija, bastaría tener X estructuras con una string (nombre) y un entero (puntos), no merece la pena complicarse más:
struct winners [9]
-string name;
-int points;
-int level;
...
end
struct winners [14]
-char name[3]; //sólo 4 letras para las iniciales
-int name;
...
end