no me va el comando -Ca de bennu para autodeclaraciones

Started by DCelso, November 11, 2016, 09:55:24 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DCelso


import "mod_file";
import "mod_grproc";
import "mod_key";
import "mod_map";
import "mod_math";
import "mod_mouse";
import "mod_path";
import "mod_proc";
import "mod_rand";
import "mod_say";
import "mod_screen";
import "mod_scroll";
import "mod_sound";
import "mod_sort";
import "mod_string";
import "mod_sys";
import "mod_text";
import "mod_time";
import "mod_timers";
import "mod_video";
import "mod_wm";
import "mod_regex";

Global
  int _button;
  int _start;
  int _select;
  int _difficulty;
  int _reset;
  int puntos;
  int dificultad;
  Player1 idPlayer1;
  int idPlayer2;
  int idMisile1;
  int idMisile2;
  int idBall;
End

Begin
  _button = _space;
  _start = _enter;
  _select = _s;
  _reset = _r;
  _difficulty = _d;
  scale_resolution = 06400480;
  set_mode(160,120);
  set_fps(60,0);
 
  dificultad = 3;
  set_fps(30 +dificultad*4 ,0);

  idPlayer1 = Player1(1,28);
  idPlayer1.direccion = 1;
   
  while (!key(_esc))
    frame;
  end

  let_me_alone();
End

process Player1(x,y)
public
  direccion;
begin
  while (!key(_esc))
   frame;
  end 
end



Intento compilar esto con bgdc -Ca testautodeclare.prg y me dice que no está definido "direccion"

testautodeclare.prg:53: error: Unknown identifier ( token error: "DIRECCION" ).

Con la versión de hace dos años de bennu esto no pasaba.

NOTA: si hago el declare de player1 se arregla, lo que yo quiero es evitar tener que hacer los declares, que para eso estaba esta opción del compilador antes . :'(
Monstruos Diabólicos

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

Drumpi

No sé si estoy en lo cierto, pero creo que desde siempre, las variables públicas han exigido seguir el orden habitual de los lenguajes de programación normales, o en su defecto, usar declare. Ya se dijo en otro hilo que la opción -Ca venía activada por defecto.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

DCelso

Pues desde siempre -Ca fue para que hiciera él los declares automáticamente (y olvidarte de estar ordenando procesos). y pudieras usar las variables de los procesos antes de definirlos.
Tal cual puse el ejemplo debería de ir con -Ca
Además si miras aún la ayuda de la consola de bgdc dice justo eso:

-C options      Specify compiler options
                Where options are:
                a    Enable automatic declare functions

Vamos puede que haya cambiado la cosa, pero yo lo usaba para eso antes :D
Monstruos Diabólicos

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

DCelso

Monstruos Diabólicos

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

alicesimu

Yo se que pixtudio contiene sus bat que añaden esta opción de compilación -Ca
Me fije y lo deje sin tocar, en mis códigos no necesito declarar antes las funciones y cosas raras (cosas que no se hacen en lenguaje div).

Lo único en bennugd es que debemos declarar las includes de los mod_<lo que sea> para que nos reconozca las funciones y variables de dicho modulo.

Siento no poderte ayudar en esto. Me da miedo tocar los bats, para no liarla.

Mayo

El problema radica en que quieres acceder a una variable publica con un identificador entero.
tendrias que cambiar el tipo de dato a lo siguiente:

int id_player ( cambia esto )

Player1 id_player ( por esto )

Ademas debes asegurarte que el proceso Player1() haya sido declarado antes de que uses el tipo de dato Player1.

Espero te sirva.

DCelso

[quote]
Player1 id_player ( por esto )
[/quote]
;D Justo eso hago, ni leíste el código.

[quote]
Ademas debes asegurarte que el proceso Player1() haya sido declarado antes de que uses el tipo de dato Player1.
[/quote]

;D , otra vez. Veo que no sabes que justo para no necesitar hacer eso se usa el comando "-Ca"

Bueno, se usaba porque parece ser que no va ahora.

[quote]
Espero te sirva.
[/quote]

Gracias por el intento, pero arreglarlo sí se, si lees bien y detenidamente el mensaje verás que pongo cómo se arregla.

El tema no va de que compile o no el código si no de por qué no va el comando "-Ca" y de si ha cambiado y ahora se usa de otra forma o es otro comando el que se usa para evitar los declares de los procesos y/o el orden de éstos

El código correcto para arreglarlo sin usar el comando mágico -Ca (que repito que no va este comando) es

[code ]
import "mod_file";
import "mod_grproc";
import "mod_key";
import "mod_map";
import "mod_math";
import "mod_mouse";
import "mod_path";
import "mod_proc";
import "mod_rand";
import "mod_say";
import "mod_screen";
import "mod_scroll";
import "mod_sound";
import "mod_sort";
import "mod_string";
import "mod_sys";
import "mod_text";
import "mod_time";
import "mod_timers";
import "mod_video";
import "mod_wm";
import "mod_regex";

Global
  int _button;
  int _start;
  int _select;
  int _difficulty;
  int _reset;
  int puntos;
  int dificultad;
  Player1 idPlayer1;
  int idPlayer2;
  int idMisile1;
  int idMisile2;
  int idBall;
End

declare process Player1(x,y)
  public
    int direccion;
  end
end

Begin
  _button = _space;
  _start = _enter;
  _select = _s;
  _reset = _r;
  _difficulty = _d;
  scale_resolution = 06400480;
  set_mode(160,120);
  set_fps(60,0);
 
  dificultad = 3;
  set_fps(30 +dificultad*4 ,0);

  idPlayer1 = Player1(1,28);
  idPlayer1.direccion = 1;
   
  while (!key(_esc))
    frame;
  end

  let_me_alone();
End

process Player1(x,y)
begin
  while (!key(_esc))
   frame;
  end 
end



Los "declares" de los procedimentos despues de las variables globales solucionan el problema de tener que ordenar los procedimientos por uso.

Y, supuestamente, "-Ca" los hace por tí.

Monstruos Diabólicos

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

SplinterGU

#7
Quote from: DCelso on November 12, 2016, 09:02:21 AM

                a    Enable automatic declare "functions"


FUNCIONES! :)

no sus variables, si necesitas acceder a variables publicas lo tenes que declarar...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

alicesimu

Quote from: SplinterGU on November 13, 2016, 03:32:38 AM
Quote from: DCelso on November 12, 2016, 09:02:21 AM

                a    Enable automatic declare "functions"


FUNCIONES! :)

no sus variables, si necesitas acceder a variables publicas lo tenes que declarar...

Es cierto lo leei de aquí,
http://forum.bennugd.org/index.php?topic=53.msg479#msg479

DCelso

Ahh. Ok
Todo aclarado.
Gracias. Maese splinter. Que haríamos sin ti.
Monstruos Diabólicos

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

panreyes


SplinterGU

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

DCelso

"-Caa" una a mas para "autodeclare function and public variables"
Monstruos Diabólicos

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

SplinterGU

Quote from: DCelso on November 14, 2016, 07:58:09 AM
"-Caa" una a mas para "autodeclare function and public variables"


el tema de las publicas es algo mas complejo, se necesita saber el tipo, si son publicas (pertencen a un solo proceso), o locales (generales) que aun no se declaran, nunca las variables son autodeclaradas, ni siquiera las globales, se necesita declarar...

incluso las funciones deberian ser obligatorias declararlas, o escribirlas antes de su uso.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

Una opción de preparseo que buscase todos los procesos declarados y sus variables públicas y creara sus declaraciones antes de compilar sería bastante útil.  No se sí será dificil al mismo algoritmo "-Ca" que ahora busca todos los procesos que hay meterle que también saque su variables públicas a la vez que el nombre del proceso. Ahora la información de tipo y variables públicas está en la implementación del proceso.

process nombreproceso
public
  variables publicas.
begin
  lo que sea.
end

por lo tanto ahí tienes el nombre de las variables publicas y su tipo.
Monstruos Diabólicos

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