PDA

Ver la versión completa : Unknow identifier ("case")



hellcross
27/08/2007, 10:55
Buenas!
Bueno pues tengo un problema :S

Estoy probando a crear mi primer menu (si sale bien el definitivo del juego) y lo creo igual y siguiendo los pasos del tutorial (ese de 529 paginas xD)

todo bien, corrijo puntos y comas y tal... voy a testear... ERROR!

me dice: Error in file C:\... at line 42: Unknow identifier ("CASE")

Este es el codigo que tengo

Program ClockTower;
//establecemos variable global
Global
int file1;
//variables de las fuentes
int select_fnt;
int title_fnt;

Int level=1;
int selection;
//variables del personaje
int mychar_position_X=1516;
int Mychar_position_y=1549;
//proceso cursor
Process cursor()
Private
int c;
end
begin
file=file1;
graph=5;
x=70;
y=140;
c=3; //efecto tembleque

selection=0;

while (not key(_enter)and selection==0)
if (key (_up)) y=20;end
if (key(_down)) y=-20; end
if (key(_esc))selection=2;end
//efecto tembleque horizontal
x=x+c;
If (x>=80) c=-3; End
if (x<=70) c=3; end
frame;
end
switch(y);
case 30:
selection=1;
case 100:
selection=2;
end
end
end
End
//inicio del programa
Begin
set_mode(320,240,16);
set_fps(32,1);
//se cargan las fuentes
file1=load_fpg("menus.fpg");
select_fnt=load_fnt("select.fnt");
title_fnt=load_fnt("titlescr.fnt");
Loop
switch(level)
case 1:
put_screen(file1,605);
//opciones a elegir en el menu
write(select_fnt,0,30,4,"game start");
write(select_fnt,0,50,4,"quick start");
write(select_fnt,0,80,4,"continue");
write(select_fnt,0,100,4,"ending list");
//llamamos a la variable del cursor
cursor();

Loop
if(selection==1) level=2; break;end;
if(selection==2) fade_off();exit("gracias por jugar");end
frame;
end

fade_off();
delete_text(0);
clear_screen();
let_me_alone();
fade_on();
End

loop;
frame;
end
end


case 2:
//permite salir al menu en cualquier sitio (Esta tambien en case 3 y 4)
loop
if(key(_esc))
//generar retardo
while(key(_esc))frame;end

//salir
level=1;
break;
end
frame;
end
fade_off();
delete_text(0);
clear_screen();
LET_ME_ALONE();
fade_on();
end



case 3:
loop
loop
if(key(_esc))
//generar retardo
while(key(_esc))frame;end

//salir
level=1;
break;
end
frame;
end

frame;
end
fade_off();
delete_text(0);
clear_screen();
LET_ME_ALONE();
fade_on();
end


case 4:
loop
loop
if(key(_esc))
//generar retardo
while(key(_esc))frame;end

//salir
level=1;
break;
end
frame;
end

frame;
end
fade_off();
delete_text(0);
clear_screen();
LET_ME_ALONE();
fade_on();
end

case 5:
loop
frame;
end
end
end



tiene tabulaciones y eso pero aqui no se ve...

ZeNiTRaM
27/08/2007, 11:37
hellcross me ha preguntado por el MSN y al final hemos conseguido compilar el código así:


Program ClockTower;
//establecemos variable global
Global
int file1;
//variables de las fuentes
int select_fnt;
int title_fnt;

Int level=1;
int selection;
//variables del personaje
int mychar_position_X=1516;
int Mychar_position_y=1549;
//proceso cursor
Process cursor()
Private
int c;
end
begin
file=file1;
graph=5;
x=70;
y=140;
c=3; //efecto tembleque

selection=0;

while (not key(_enter)and selection==0)
if (key (_up)) y=20;end
if (key(_down)) y=-20; end
if (key(_esc))selection=2;end
//efecto tembleque horizontal
x=x+c;
If (x>=80) c=-3; End
if (x<=70) c=3; end
frame;
end

if (y == 30) selection=1; end
if (y == 100) selection=2;
end
end
//inicio del programa
Begin
set_mode(320,240,16);
set_fps(32,1);
//se cargan las fuentes
file1=load_fpg("menus.fpg");
select_fnt=load_fnt("select.fnt");
title_fnt=load_fnt("titlescr.fnt");
Loop
if(level == 1)
put_screen(file1,605);
//opciones a elegir en el menu
write(select_fnt,0,30,4,"game start");
write(select_fnt,0,50,4,"quick start");
write(select_fnt,0,80,4,"continue");
write(select_fnt,0,100,4,"ending list");
//llamamos a la variable del cursor
cursor();

Loop
if(selection==1) level=2; break;end;
if(selection==2) fade_off();exit("gracias por jugar");end
frame;
end

fade_off();
delete_text(0);
clear_screen();
let_me_alone();
fade_on();
frame;
end
end


if(level == 2)
//permite salir al menu en cualquier sitio (Esta tambien en case 3 y 4)
loop
if(key(_esc))
//generar retardo
while(key(_esc))frame;end

//salir
level=1;
break;
end
frame;
end
fade_off();
delete_text(0);
clear_screen();
LET_ME_ALONE();
fade_on();
end



if(level == 3)
loop
loop
if(key(_esc))
//generar retardo
while(key(_esc))frame;end

//salir
level=1;
break;
end
frame;
end

frame;
end
fade_off();
delete_text(0);
clear_screen();
LET_ME_ALONE();
fade_on();
end


if(level == 4):
loop
loop
if(key(_esc))
//generar retardo
while(key(_esc))frame;end

//salir
level=1;
break;
end
frame;
end

frame;
end
fade_off();
delete_text(0);
clear_screen();
LET_ME_ALONE();
fade_on();
end

if(level == 5)
loop
frame;
end
end
end


Parece ser que la version de Fenix no soporta bien los switch/case, o que estaban mal puestos :D pero cambiandolos por if ya compila bien el codigo.

hellcross
27/08/2007, 11:47
Arreglado, gracias ZenitraM

Drumpi
30/08/2007, 02:57
Perdon por no responder antes, pero como no suelo pasar por aqui, sino por el de gp2x... ^^U
En fin, Hellcross, Fenix si que soporta switch/case, pero en lugar de escribir:
switch(y);
case 30:
selection=1;
case 100:
selection=2;
end
end
end

deberias haber escrito:
switch(y);
case 30:
selection=1;
end
case 100:
selection=2;
end
end

Cuando acaba un case debe cerrarse antes de abrir otro, y no al final ;)