Hola a todos.
Por fin he decidido ponerme a mirar Bennu en serio (he tardado lo mío) y quiero adaptar algunas cosas que tengo hechas en Fénix y no doy con cómo hacerlo.
Por ejemplo, si hago un programa como éste:
[code language="bennu"]
process proceso()
begin
graph=write_in_map(0,"kk",4);
x=100;y=100;
otro();
loop
frame;
end
end
process otro()
begin
frame;
end
begin
proceso();
Loop
Frame;
End
end
[/code]
al compilar, me da el siguiente error:
[code language="bennu" options="singleline"]Error in file D:\fenix\bennu\prueba\prueba.prg at line 6: Undefined procedure ("OTRO")[/code]
En ese aspecto...
¿Bennu no es como Fénix?
¿En qué orden hay que declarar los procesos?
Recuerdo que en ANSi C, pasaba algo parecido y se podía poner el prototipo de la función al inicio y desarrollarla luego en cualquier parte del código, ¿es así también en Bennu? ¿cómo escribo el prototipo?
Perdonad si esto ya se ha respondido en otras ocasiones, pero lo he buscado por el foro y no lo he encontrado.
Muchas gracias,
Salud
En bennu las funciones están agrupadas en varios módulos (librerías). Escribe al principio de tu programa:
import "mod_text";
Ya que estás usando la función write_in_map.
Si usases funciones de teclado, por ejemplo "key", tendrías que incluir el módulo correspondiente, que para el caso es "mod_key".
Por el foro hay varios sitios donde se habla de esto y también una lista con los módulos disponibles, por si quieres saber más.
Si te preguntas qué ventajas tiene esto, bueno, entre otras implica que no es necesario distribuir todas las librerías con tu juego, sólo aquellas que estás utilizando.
Al principio puede parecer incómodo pero en realidad todos los módulos tienen nombres autodescriptivos por lo que es fácil acostumbrarse.
Hola Darío, gracias por la respuesta.
Más o menos conozco la modularización de Bennu y ése, creo, no es el problema...
El problema es que, al compilar, no encuentra el proceso "otro()" al estar declarado debajo del proceso "proceso()"... si los coloco al revés (el proceso "otro()" declarado sobre el proceso "proceso()") compila perfectamente... pero esto obliga a estructurar el código "físicamente", no sólo "lógicamente"...
Muchas gracias.
Solucionado.
He bajado la R24 de Bennu y funciona perfectamente sin tocar nada.
Muchas gracias.
Salud
El tema es que antes era obligado hacer la declaración de procesos, esto quiere decir que antes de empezar a escrbir código tenías que escrbir los prototipos:
declare process proceso()
private
//variables privadas
end
local //o public
//variables PUBLICAS
end
end
declare process otro()
end
Ahora se sigue podiendo hacer y es recomendado, pero no es obligatorio, aunque ayuda muchísimo a mantener el orden y el correcto entendimiento de programas largos.
Gracias por la explicación, HaCkZJuaNN.
Tienes razón, para proyectos largos es más claro y ayuda a planificar el código, pero para pequeñas pruebas es más cómodo no tener que hacer los prototipos de las funciones.
Muchas gracias.
Salud.
justo te iba a responder que tenias una version vieja... me alegro que te hayas animado con bennu y que hayas solucionado tu problema... bienvenido...
Sí, la verdad es que me ha costado pasarme a Bennu... más que nada porque no sabía cómo iba ni cuánto me iba a costar portar lo que tenía hecho en Fénix. Una vez que he bajado la r24 de Bennu, ha compilado todo y funcionado sin problemas. Así que ya me tendréis por aquí trasteando...
Muchas gracias
Salud
:)
Holas Oscar, me alegro de verte por aquí :)
¿Participarás en la crap 4? xD
Holas PíXeL!
Cuenta con mi juego para la compo... es hasta el 12 de Abril, no?
Que sepas que precisamente tu migración de Fénix a Bennu (y la de algunos otros, como Drumpi que creo también anda por aquí de vez en cuando) han ayudado a que me cambie.
Bueno, voy a ver si preparo un truño-game parala compo... mi mujer igual se anima a hacer otro.
Salud!
Si, por aqui me paso... a veces :D Pero hay más gente que ha migrado desde Fenix, solo que con cambio de seudónimo por el camino.