Me he complicado en un menú.

Started by Yawin, November 18, 2010, 11:43:52 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Yawin

Bueno, la cosa es que estoy con el menú de mi Marcianitos (CC). La cosa es que creo que me he complicado demasiado. Y, bueno, quería vuestra opinión.

Hay tres pantallas:







El código es este:
mport "mod_video";
import "mod_map";
import "mod_screen";
import "mod_key";
import "mod_grproc";
import "mod_proc";
import "mod_rand";
import "mod_text";
import "mod_sound";
import "mod_scroll";
import "mod_mouse";
import "mod_file";
import "mod_sys"

CONST
Retardo=13;
END

GLOBAL
INT menu=1,opción=null;
INT Graficos, punt;
int pantalla=1;
END

PROCESS Main()
PRIVATE
string arg;
END
BEGIN

set_mode(640,480,32,MODE_FULLSCREEN);
set_fps(60,1);
Graficos=load_fpg("dll\prueba.fpg");

Put_screen(graficos,43);

punt=puntero(400);
musica();
repeat
switch(menu)
case 1:
Signal(punt,s_kill);
punt=puntero(300);
if(key(_enter))
while(key(_enter))
frame;
end
pantalla=2;
Put_screen(graficos,55);
menu=4;
end

end
case 2:
Signal(punt,s_kill);
punt=puntero(350);
if(key(_enter))
while(key(_enter))
frame;
end
pantalla=3;
Put_screen(graficos,56);
menu=4;
end

end
case 3:
Signal(punt,s_kill);
punt=puntero(400);
if(key(_enter))
while(key(_enter))
frame;
end
opción=3;
end
end
case 4:
Signal(punt,s_kill);
punt=puntero(317);
if(key(_enter))
while(key(_enter))
frame;
end
//opción=4;
end

end
case 5:
Signal(punt,s_kill);
punt=puntero(382);
if(key(_enter))
while(key(_enter))
frame;
end
opción=5;
end

end
case 6:
Signal(punt,s_kill);
punt=puntero(447);
if(key(_enter))
while(key(_enter))
frame;
end
opción=6;
end
end
end
if(key(_esc))
while(key(_esc))
pantalla=1;
Put_screen(graficos,43);
menu=1;
frame;
end
end
if(key(_down))
while(key(_down))
frame;
end
menu+=1;
end
if(key(_up))
while(key(_up))
frame;
end
menu-=1;
end

switch(pantalla)
case 1:
if(menu<1)
menu=3;
end
if(menu>3)
menu=1;
end
end
case 2:
if(menu<4)
menu=6;
end
if(menu>6)
menu=4;
end
end
case 3:
if(menu<4)
menu=6;
end
if(menu>6)
menu=4;
end
end
end

frame;
until(opción!=null);

switch(pantalla)
case 2:
switch(opción)
case 4:

end
case 5:
arg="Individual.bat";
exec(_P_NOWAIT,"Individual.bat",1,&arg);
end
case 6:
arg="Individual.bat";
exec(_P_NOWAIT,"nav_ind.bat",1,&arg);
end
end
end
case 3:
switch(opción)
case 4:

end
case 5:
arg="..\marcianitos_mul";
exec(_P_NOWAIT,"Multijugador.bat",1,&arg);
end
case 6:
arg="Individual.bat";
exec(_P_NOWAIT,"nav_mul.bat",1,&arg);
end
end
end
end

let_me_alone();
Unload_fpg(graficos);

END

PROCESS puntero(Y)
BEGIN
X=225;
Y=Y;
Graph=2;
loop
frame;
end
END

PROCESS musica()
PRIVATE
INT can;
INT i,j=0;
END
BEGIN
can=load_song("sounds\NA-14.mid");
for(i=0;i<=6;i++)
if(i==6)
i=0;
end
if(IS_PLAYING_SONG())
i-=1;
else
if(i==0)
set_song_volume(35);
else
set_song_volume(100);
end
Play_song(can,0);
end
frame;
end
END


Gracias de antemano.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

DCelso

pues sí, lo has complicao mucho :D
por ejemplo puntero no hace falta matarlo siempre y volverlo a crear. puedes acceder a su variable y (que es la única que cambias ) a través de su id, por ejemplo punt.y=loquesea. sin tener que hacer el kill y la nueva llamada a puntero.
También en puntero y=y sobra, y siempre será igual a y :D.
A ver que más veo.
Monstruos Diabólicos

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

Yawin

muchas gracias. Ahora lo cambio ^__^
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end