Ver la versión completa : Dos problemas muy jorobadillos...
hellcross
24/09/2007, 18:29
Bueno pues tengo unos problemillas bastante gordos que me estan desesperando y hacen que por mas que, intento seguir no pueda.
1º: Estoy siguiendo un manual muy completo y en el te enseñan a crear un menu con dos opciones. He seguido todas correctamente y según el manual, cierto codigo que he introducido sirve para salir del juego (tecla ESC) en cualquier momento. Esto por ejemplo, no lo hace, se limita a quedarse colgado.
esto es lo que mas me jode de momento. Si no puedo hacer que salte donde esta mi persnaje mal vamos.. XD
Asi como cuando elijo la opcion para que salte al nivel donde esta mi personaje moviendose por el scroll, se queda en negro y se cuelga sin aparecer nada.
2º He intentado introducir mas opciones en el menu, pero no puedo :(
solo puedo moverme por las dos que cree siguiendo el manual. Seguro que es una duda tonta de novato, pero me esta desesperando.
He aqui mi codigo fuente:
//-----------------------------------------------
//Program: Clock Tower for Gp32
//Author: Dariogdm (hellcross)
//Team:
//-----------------------------------------------
Program ClockTower;
//establecemos variable global
Global
int file1;
//variables de las fuentes
int select_fnt;
int title_fnt;
int id2;
Int level=1;
int selection;
//variables del personaje
int mychar_position_X=0;
int Mychar_position_y=318;
//variable del sonido
int sonido;
END
//proceso cursor
Process cursor()
Private
int c;
END
BEGIN
file=file1;
graph=5;
x=0;
y=30;
c=3; //efecto tembleque
selection=0;
while (not key(_enter)and selection==0)
if (key (_up)) y=30;end
if (key(_down)) y=60; end
if (key(_down)) y=90; end
if (key(_down)) y=120; end
if (key(_down)) y=150; 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
//proceso personaje
Process Mycharacter (X,Y)
Begin
ctype=c_scroll;
scroll[0].camera=id;
graph=1;
angle=0;
loop
if (key(_right) and not key(_UP) and not key(_down))
X=X+2;
if (graph<=10 or graph>=13)graph=10;end;
graph=graph+1;
flags=0;
end
if (key(_left) and not key(_UP) and not key(_DOWN))
x=X-2;
if (graph<=10 or graph>=13)graph=10;end;
graph=graph+1;
flags=1;
end
if (key(_up) and not key(_left) and not key(_right))
y=Y-2;
if (graph<=6 or graph>=9)graph=6;end;
graph=graph+1;
end
if (key(_down) and not key(_left) and not key(_right))
y=Y+2;
if (graph>=3);graph=1;end
graph=graph+1;
end
frame;
End //LOOP
end
//inicio del programa
Begin
set_mode(320,240,16);
set_fps(32,1);
//se cargan las fuentes
file1=load_fpg("menuuu.fpg");
select_fnt=load_fnt("select.fnt");
title_fnt=load_fnt("titlescr.fnt");
//se carga la musica
sonido = load_song("C:\Documents and Settings\Dario\Escritorio\FENIX GP32\Clock Tower GP32 beta\Sonidos\clocktower-thefirstfear_se-clock.mid");
//imagenes previas
play_song(sonido,0);
id2=load_fpg("menus.fpg");
put_screen(id2,3);
Loop
Frame 8000;
set_mode (320,240,16);
id2=load_fpg("menus.fpg");
put_screen(id2,2);
frame 8000;
set_mode (320,240,16);
id2=load_fpg("menus.fpg");
put_screen(id2,4);
frame 8000;
break;
end
Loop
if(level == 1)
put_screen(file1,605);
//opciones a elegir en el menu
write(select_fnt,0,30,25,"game start");
write(select_fnt,0,60,25,"quick start");
write(select_fnt,0,90,25,"continue");
write(select_fnt,0,120,25,"ending list");
write(select_fnt,0,150,25,"exit");
//llamamos a la variable del cursor
cursor();
Loop
if(selection==1) level=2 ; break;end;
if(selection==2) level=3 ; break;end;
if(selection==3) 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)
//sobre el caracter
Mycharacter(mychar_position_X,MyChar_Position_Y);
start_scroll(0,file1,300,0,0,0);
//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
Si no hay ayuda, no hay clock tower... [wei]
xD
Gracias :brindis:
< - >
Por cierto tampoco logro entender donde debo poner el codigo para descargar la musica (quitarla vamos).
< - >
Creo que ya he entendido algo de porque no me carga el primer nivel...
En el manual dice que cargara los graficos (el scroll etc..) de lo denominado File1... Pero que es file1 y porque lo tengo que sustituir pa que me cargue los graficos correctos metidos en mi FPG?
:P
en fenix la razon mas probable para que algo se quede "colgado" es porque hay algun sitio donde te falta un FRAME; asi que mirate eso como primera opcion.
Aiken
hellcross
24/09/2007, 18:54
he estado revisando el codigo varias veces y todo parece en su sitio... ademas creo que el Flamebird me lo habria advertido antes de compilarlo...
he estado revisando el codigo varias veces y todo parece en su sitio... ademas creo que el Flamebird me lo habria advertido antes de compilarlo...
Te he escrito un MP ofreciendome para ayudarte. Un asludo
he estado revisando el codigo varias veces y todo parece en su sitio... ademas creo que el Flamebird me lo habria advertido antes de compilarlo...
supongo que el flamebird te avisara de errores de sintaxis, pero no creo que te avise si el programa no hace lo que deberia porque falten sentencias, pues eso depende de lo que tu programa haga.
Aiken
< - >
yo probaria a meter un frame justo antes de hacer un BREAK; porque si tienes mala suerte y al salir del bucle con el break no pillas otro frame de otro bucle lo mismo se te queda colgado.
Aiken
hellcross
25/09/2007, 16:41
Gracias por el consejo. Lo tendre en cuenta a medida que avance. Pero aún asi no va. Yo creo que es porque en ningun momento creo que he cargado el FPG donde esta la imagen de scroll y el personaje....
Pero tampoco se si esque tengo que cargarla o que. Yo no entiendo lo de int file1...
< - >
Y si alguien sabe como añadir opciones al menu que me ayude.. que a pesar de tener creadas con texto 4 opciones, el cursor solo se mueve por dos. Y he estado experimentando pero nada...
A mi esque cuando me sacan del tutorial... T_T xD
lo de "int file1"
Veamos ... todas las funciones de pintar graficos suelen llevar un parametro que es el file. De donde lo sacas? pues cuando cargas imagenes sueltas el file=0, luego le pasas un 0 a las funciones y ya esta. Cuando quieres usar fpgs, pues cargas el archivo con load_fpg guardando el valor que devuelve la funcion (es el numero de file).
Luego si quieres mostrar una imagen, pues el parametro file vale 0 (a pelo) si quieres mostrar suelta, o vale lo que te haya devuelto el load_fpg si quieres mostrar una imagen que estan dentro de ese fpg.
Es facil, dime exactamente que es lo que no entiendes, e intento aclarartelo ;)
Aiken
< - >
en que fpg tienes los graficos del personaje?
tienes que cargarle guardando el valor que devuelve file2 = load_fpg(...
y luego en tu proceso mycharacter poner un file=file2;
con eso de file=file2 le dices que el proceso mycharacter lea los graficos de file2 (que es lo que te ha devuelto el load_fpg)
Aiken
< - >
En cuanto al scroll ...
Segun esto que tienes puesto
start_scroll(0,file1,300,0,0,0);
parece que los graficos los busca en file1
Aiken
hellcross
25/09/2007, 18:34
Creo que ya se lo que se cuelga. He creado un programa aparte del proceso que carga en nivel 2 (donde se cuelga) Creo que se cuelga aqui. Creo que deberia de salir un personaje moviendose por un scroll. Pero se queda colgado.
Program ejemploprocesos;
Global
int file1;
int mychar_position_X=0;
int Mychar_position_y=318;
end
Begin
Set_mode(320,240,16,);
file1=load_fpg("file1.fpg");
ctype=c_scroll;
scroll[0].camera=id;
graph=1;
angle=0;
Mycharacter(x,y);
frame;
end
Process Mycharacter (X,Y)
Begin
loop
if (key(_right) and not key(_UP) and not key(_down))
X=X+2;
if (graph<=10 or graph>=13)graph=10;end;
graph=graph+1;
flags=0;
frame;
end
if (key(_left) and not key(_UP) and not key(_DOWN))
x=X-2;
if (graph<=10 or graph>=13)graph=10;end;
graph=graph+1;
flags=1;
frame;
end
if (key(_up) and not key(_left) and not key(_right))
y=Y-2;
if (graph<=6 or graph>=9)graph=6;end;
graph=graph+1;
frame;
end
if (key(_down) and not key(_left) and not key(_right))
y=Y+2;
if (graph>=3);graph=1;end
graph=graph+1;
frame;
End //LOOP
end
END
Si me corregiis el codigo, supongo que funcionara insertandolo al juego en si.
yo quitaria todos los frames que tienes en ese trozo de codigo y pondria un solo frame justo antes de End //LOOP
A ver si hay suerte, si funciona luego te digo porque creo que se cuelga ;)
Aiken
BUHOnero
26/09/2007, 10:52
yo veo algo muy raro en este codigo, es el End despues del global... yo no lo pondría :D
< - >
Viendo el codigo asi por encima, el primer codigo que has puesto, veo mucho desorden, muchísimo, no me estraña que se te cuelgue... declaras procesos dentro del proceso principal del juego, y eso no se hace asi en Fenix, tienes que declarar cada proceso individualmente, con su Begin End correspondiente, por ejemplo, el cursor y el personajes tan metidos dentro del Program ClockTower, y así no se pone, el program tiene que tener un Begin y un End, y luego declara todos los process que necesites.
yo veo algo muy raro en este codigo, es el End despues del global... yo no lo pondría :D
< - >
Viendo el codigo asi por encima, el primer codigo que has puesto, veo mucho desorden, muchísimo, no me estraña que se te cuelgue... declaras procesos dentro del proceso principal del juego,
- el end del global yo juraria que esta perfecto.
- y lo de que esta declarando procesos dentro del principal es mentira. Es una confusion tipica de Fenix, la gente cree que el proceso principal es PROGRAM, pero es mentira, el proceso principal empieza en //inicio del programa
Begin. De hecho si no te lo crees prueba a eliminar la linea PROGRAM, y deberia compilarte sin ella ;) esa linea solo se mantiene como algo anecdotico que hereda de DIV. ;)
PD. Y sí, estoy de acuerdo, esta un poco desordenado, pero quien no programa un poco desordenado en la primera version de un programa? sobre todo en la programacion a pelo, sin analisis y diseño, que es la que usamos todos :)
Aiken
BUHOnero
26/09/2007, 11:40
- el end del global yo juraria que esta perfecto.
- y lo de que esta declarando procesos dentro del principal es mentira. Es una confusion tipica de Fenix, la gente cree que el proceso principal es PROGRAM, pero es mentira, el proceso principal empieza en //inicio del programa
Begin. De hecho si no te lo crees prueba a eliminar la linea PROGRAM, y deberia compilarte sin ella ;) esa linea solo se mantiene como algo anecdotico que hereda de DIV. ;)
PD. Y sí, estoy de acuerdo, esta un poco desordenado, pero quien no programa un poco desordenado en la primera version de un programa? sobre todo en la programacion a pelo, sin analisis y diseño, que es la que usamos todos :)
Aiken
joer, ya sabes mas que yo en Fenix jajaja posiblemente tengas razón, nunca he probado a cambiar orden o borrar esa linia, pero desordenarlo me duele a los ojos por la costumbre :D
< - >
además... que por orden queda mucho mejor saber que todos los procesos son:
Process
Begin
End
Y que el programa principal es (aunque como dices no es así realmente, pero este orden ayuda):
Program
Begin
End
< - >
Yo alucino con este cacho de código:
Loop
Frame 8000;
set_mode (320,240,16);
id2=load_fpg("menus.fpg");
put_screen(id2,2);
frame 8000;
set_mode (320,240,16);
id2=load_fpg("menus.fpg");
put_screen(id2,4);
frame 8000;
break;
end
qué se supone que hace¿? cargas a saco en un bucle fpgs y cambias resoluciones... bueno, pones la misma siempre, pero porque declaras todo eso ahí dentro¿? no lo entiendo...
pero desordenarlo me duele a los ojos por la costumbre :D
< - >
eso es muy cierto, hacerlo ordenado aunque sea lo del program que sobre siempre viene mejor :D
Creo que lo que quiere hacer es exactamente esto:
set_mode (320,240,16);
id2=load_fpg("menus.fpg");
Frame 8000;
put_screen(id2,2);
frame 8000;
put_screen(id2,4);
frame 8000;
Queda mas corto y claro no? :)
PD. En realidad seguro que he programado muchisimo menos Fenix que tu, y tu sabes mas, lo que pasa que lo poco que he hecho tuve muchisimos problemas, con cosas del lenguaje, y aprendi cosas como esas. Por cierto, algunas de esas cosas me las explico nuestro amigo forero Drumpi que es un master! :D
Aiken
BUHOnero
26/09/2007, 12:23
eso es muy cierto, hacerlo ordenado aunque sea lo del program que sobre siempre viene mejor :D
Creo que lo que quiere hacer es exactamente esto:
set_mode (320,240,16);
id2=load_fpg("menus.fpg");
Frame 8000;
put_screen(id2,2);
frame 8000;
put_screen(id2,4);
frame 8000;
Queda mas corto y claro no? :)
PD. En realidad seguro que he programado muchisimo menos Fenix que tu, y tu sabes mas, lo que pasa que lo poco que he hecho tuve muchisimos problemas, con cosas del lenguaje, y aprendi cosas como esas. Por cierto, algunas de esas cosas me las explico nuestro amigo forero Drumpi que es un master! :D
Aiken
a parte... tantos loas fpg no se si es un despilfarro de recursos... pero evitaría cargar lo mismo tntas veces sin hacer un unload
hellcross
26/09/2007, 14:38
joer, ya sabes mas que yo en Fenix jajaja posiblemente tengas razón, nunca he probado a cambiar orden o borrar esa linia, pero desordenarlo me duele a los ojos por la costumbre :D
< - >
además... que por orden queda mucho mejor saber que todos los procesos son:
Process
Begin
End
Y que el programa principal es (aunque como dices no es así realmente, pero este orden ayuda):
Program
Begin
End
< - >
Yo alucino con este cacho de código:
Loop
Frame 8000;
set_mode (320,240,16);
id2=load_fpg("menus.fpg");
put_screen(id2,2);
frame 8000;
set_mode (320,240,16);
id2=load_fpg("menus.fpg");
put_screen(id2,4);
frame 8000;
break;
end
qué se supone que hace¿? cargas a saco en un bucle fpgs y cambias resoluciones... bueno, pones la misma siempre, pero porque declaras todo eso ahí dentro¿? no lo entiendo...
Macho... no alucines tanto que es mi primera vez :rolleyes:
Ese "cacho" codigo, lo que hace es cargar y mostrar en pantalla unas imagenes previas al menu, digamos la presentacion.
< - >
lo de "int file1"
Veamos ... todas las funciones de pintar graficos suelen llevar un parametro que es el file. De donde lo sacas? pues cuando cargas imagenes sueltas el file=0, luego le pasas un 0 a las funciones y ya esta. Cuando quieres usar fpgs, pues cargas el archivo con load_fpg guardando el valor que devuelve la funcion (es el numero de file).
Luego si quieres mostrar una imagen, pues el parametro file vale 0 (a pelo) si quieres mostrar suelta, o vale lo que te haya devuelto el load_fpg si quieres mostrar una imagen que estan dentro de ese fpg.
Es facil, dime exactamente que es lo que no entiendes, e intento aclarartelo ;)
Aiken
< - >
en que fpg tienes los graficos del personaje?
tienes que cargarle guardando el valor que devuelve file2 = load_fpg(...
y luego en tu proceso mycharacter poner un file=file2;
con eso de file=file2 le dices que el proceso mycharacter lea los graficos de file2 (que es lo que te ha devuelto el load_fpg)
Aiken
< - >
En cuanto al scroll ...
Segun esto que tienes puesto
start_scroll(0,file1,300,0,0,0);
parece que los graficos los busca en file1
Aiken
Pero ese file1 como declaro que fichero es.
Pienso que seria asin:
file1=load_fpg(ruta del fpg);
Creo que se hacia asi, sin chuleta no me sale :D
Porque si no, tu pones ahi file1 pero en ningun momento dices que es File1...
Cuando quieres usar fpgs, pues cargas el archivo con load_fpg guardando el valor que devuelve la funcion (es el numero de file).
te estas liando con una cosa tan simple y tonta ....
al principio del programa principal.
int file1;
int file2;
int file3;
file1 = load_fpg("archivo1.fpg");
file2 = load_fpg("archivo2.fpg");
file3 = load_fpg("archivo3.fpg");
Y ya no pongas NINGUN load_fpg en ningun otra parte del codigo, porque solo hay que cargar los archivos una vez. Lo digo porque he visto que haces load_fpg del mismo archivo varias veces, no se para que? ;)
Aiken
BUHOnero
26/09/2007, 14:58
te estas liando con una cosa tan simple y tonta ....
al principio del programa principal.
int file1;
int file2;
int file3;
file1 = load_fpg("archivo1.fpg");
file2 = load_fpg("archivo2.fpg");
file3 = load_fpg("archivo3.fpg");
Y ya no pongas NINGUN load_fpg en ningun otra parte del codigo, porque solo hay que cargar los archivos una vez. Lo digo porque he visto que haces load_fpg del mismo archivo varias veces, no se para que? ;)
Aiken
a eso me refería yo jajaja
Además no hace falta decir int file1, el int sobra, en Fenix no hace falta declarar el tipo de variable :brindis:
hellcross
26/09/2007, 15:40
vale he cambiado mi codigo y ahora lo tengo asi:
//-----------------------------------------------
//Program: Clock Tower for Gp32
//Author: Dariogdm (hellcross)
//Team:
//-----------------------------------------------
Program ClockTower;
//establecemos variable global
Global
int file1;
//variables de las fuentes
int select_fnt;
int title_fnt;
int file2;
Int level=1;
int selection;
//variables del personaje
int mychar_position_X=0;
int Mychar_position_y=318;
//variable del sonido
int sonido;
END
//proceso cursor
Process cursor()
Private
int c;
END
BEGIN
file=file1;
graph=5;
x=0;
y=30;
c=3; //efecto tembleque
selection=0;
while (not key(_enter)and selection==0)
if (key (_up)) y=30;end
if (key(_down)) y=60; end
if (key(_down)) y=90; end
if (key(_down)) y=120; end
if (key(_down)) y=150; 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
//proceso personaje
Process Mycharacter (X,Y)
Begin
file1=load_fpg("file1.fpg");
ctype=c_scroll;
scroll[0].camera=id;
graph=10;
angle=0;
loop
if (key(_right) and not key(_UP) and not key(_down))
X=X+2;
if (graph<=10 or graph>=13)graph=10;end;
graph=graph+1;
flags=0;
end
if (key(_left) and not key(_UP) and not key(_DOWN))
x=X-2;
if (graph<=10 or graph>=13)graph=10;end;
graph=graph+1;
flags=1;
end
if (key(_up) and not key(_left) and not key(_right))
y=Y-2;
if (graph<=6 or graph>=9)graph=6;end;
graph=graph+1;
end
if (key(_down) and not key(_left) and not key(_right))
y=Y+2;
if (graph>=3);graph=1;end
graph=graph+1;
end
frame;
End //LOOP
end
//inicio del programa
Begin
set_mode(320,240,16);
set_fps(32,1);
//se cargan las fuentes
file1=load_fpg("menuuu.fpg");
select_fnt=load_fnt("select.fnt");
title_fnt=load_fnt("titlescr.fnt");
//se carga la musica
sonido = load_song("C:\Documents and Settings\Dario\Escritorio\FENIX GP32\Clock Tower GP32 beta\Sonidos\OPENING.wav");
//imagenes previas
play_song(sonido,0);
file2=load_fpg("menus.fpg");
put_screen(file2,3);
Loop
Frame 8000;
set_mode (320,240,16);
put_screen(file2,2);
frame 8000;
set_mode (320,240,16);
put_screen(file2,4);
frame 8000;
break;
end
Loop
if(level == 1)
//
put_screen(file1,605);
//opciones a elegir en el menu
write(select_fnt,0,30,25,"game start");
write(select_fnt,0,60,25,"quick start");
write(select_fnt,0,90,25,"continue");
write(select_fnt,0,120,25,"ending list");
write(select_fnt,0,150,25,"exit");
//llamamos a la variable del cursor
cursor();
Loop
if(selection==1) level=2 ;frame; break;end;
if(selection==2) level=3 ; frame; break;end;
if(selection==3) 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)
//quitar musica
unload_song("opening.wav");
//sobre el caracter
Mycharacter(mychar_position_X,MyChar_Position_Y);
start_scroll(0,file1,300,0,0,0);
//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;
frame;
break;
end
frame;
end
fade_off();
delete_text(0);
clear_screen();
LET_ME_ALONE();
fade_on();
end
if(level == 3)
unload_song("OPENING.wav");
loop
loop
if(key(_esc))
//generar retardo
while(key(_esc))frame;end
//salir
level=1;
frame;
break;
end
frame;
end
frame;
end
fade_off();
delete_text(0);
clear_screen();
LET_ME_ALONE();
fade_on();
end
if(level == 4):
unload_song("OPENING.wav");
loop
loop
if(key(_esc))
//generar retardo
while(key(_esc))frame;end
//salir
level=1;
frame;
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
Sigue sin pasar al level 2 cuando aprieto la opcion en el menu. se me queda en negro, sin mas. Tambien he intentado parar la Opening.wav poniendo un unload_wav en cada level para que al apretar deje de oirse... pero se sigue oyendo TT_TT
1- Porque se me pone en negro?
2- Como paro la cancion para que al pasar al level 2 (cuando pase) deje de oirse. Porque se pone en negro, pero se sigue oyendo.
Gracias ;)
Haber si aclaro esta duda y abro un hilo para el clock tower donde ponga mis dudas y problemas a medida que vaya avanzado. Porque poner hilo a hilo es un poco... no se.
Ains...
BUHOnero
26/09/2007, 16:39
bueno, voy comentando :brindis:
Me cuesta un huevo leer el codigo, los tabulados quedan fatal aqui en la web... :S
Pero primera cosa: sonido, si cargas un archivos wav, usa load_wav, play_wav, stop_wav y unloaa_wav en este orden para usarlo, no uses song, ademas si no haces stop no puedes hacer unload (me parece recordar), pero por si acaso controla bien hacerlo en este orden por si las moscas.
< - >
Ya se porque se queda en negro... ahora te lo comento :brindis:
hellcross
26/09/2007, 16:59
Guay!
Sobre el sonido, yo intente poner antes un stop_song y luego el unload_song pero no arrancaba por un problema de sintaxis. Bueno usaré wav (pensaba que esta opcion no existia :D)
Gracias :brindis:
BUHOnero
26/09/2007, 17:33
Guay!
Sobre el sonido, yo intente poner antes un stop_song y luego el unload_song pero no arrancaba por un problema de sintaxis. Bueno usaré wav (pensaba que esta opcion no existia :D)
Gracias :brindis:
por eso te digo, lo del song no funciona el stop,. y no he encontrado documentación sobre su uso... lo que hago es un fade hasta el silencio y luego un unload_song, pero si usas wavs usa las que te he dicho :brindis:
Me estaba mirando el codigo... y no acabo de ver el problema, pero porque no consigo seguir la secuencia del programa... para mi está muy liado, que no quiere decir que esté mal :D pero no acabo de pillar como has puesto estos menus para saltar de niveles...
< - >
Bien, prueba esto:
donde has puesto en el if(level == 1), más abajo pones:
fade_off();
delete_text(0);
clear_screen();
let_me_alone();
fade_on();
frame;
end
end
Pues quita el ultimo end, el que te he puesto en negrita, y prueba
hellcross
26/09/2007, 17:46
Nada macho no va. Cuelgo el programa con el codigo fuente para bajarlo y verlo mas claro. Asi se podrá ver en funcionamiento.
Tampoco he logrado lo de la musica T_T... soy un negado *****!
BUHOnero
26/09/2007, 17:58
ok, una pregunta, en el menu, que opcion eliges para comenzar el juego¿? o sea, que seleccionas para ir a level2¿?
hellcross
26/09/2007, 18:01
Game Start
PD: ah tampoco he logrado que hacer para que el cursor baje a mas de 2 opciones, porque solo puede elegir dos :S
BUHOnero
26/09/2007, 18:04
while (not key(_enter)and selection==0)
if (key (_up)) y=30;end
if (key(_down)) y=60; end
if (key(_down)) y=90; end
if (key(_down)) y=120; end
if (key(_down)) y=150; 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
esto puede ser un problema gordo, ya que si te fijas dices que si 'y' vale 100 entonces selection=2, pero en las opciones del menu nunca valdrá 100, tienes las opciones en las posiciones 30, 60, 90, 120 y 150, pero nunca valdrá 100...
hellcross
26/09/2007, 18:10
***** no me habia fijado... Gracias voy a probar ;)
< - >
Vale lo he cambiado por esto. Pero no noto ningun cambio T_T
while (not key(_enter)and selection==0)
if (key (_up)) y=30;end
if (key(_down)) y=60; end
if (key(_down)) y=90; end
if (key(_down)) y=120; end
if (key(_down)) y=150; 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 == 60) selection=2;end
if (y == 90) selection=3;end
if (y == 120) selection=4;end
if (y == 150) selection=5;end
end
BUHOnero
26/09/2007, 18:19
pon esto:
if (key (_up)) y=30; while(key (_up))frame;end end
if (key(_down)) y=60;while(key (_down))frame;end end
if (key(_down)) y=90;while(key (_down))frame;end end
if (key(_down)) y=120;while(key (_down))frame;end end
if (key(_down)) y=150;while(key (_down))frame;end end
Porque otro problema es que detecta que pulsas abajo y lo que hace es bajar de golpe hasta abajo, ademas, solo leera la primera opcion, nunca pasaras a la siguiente, yo para los menus no uso esto, lo que hago es incrementar la y, pon y+=30 donde ves la negrita borra lo subrayado, a ver que tal el menu
< - >
y luego, esta instruccion esta mal puesta:
start_scroll(0,file1,300,320,240,16);
START_SCROLL ( NÚMERO, FICHERO, GRÁFICO, FONDO, REGION, FLAGS )
el fondo 320... no existe en el fpg, y da error
hellcross
26/09/2007, 18:31
Muy Bien!!
Ahora se pueden elegir todas las opciones ;)
Pero baja mas de donde deberia bajar XD
osea que cuando baja hasta la ultima opcion, si le das "abajo" sigue hasta que se acaba la pantalla xD
asique he intentado poner despues del if (key(_down)) y+=30;while(key (_down))frame;end end:
if (key(_down)) y=150;while(key (_up))frame;end end
Que pense que significaria: Si presiono abajo y es y=150(la ultima opcion) sube arriba. Pero no xD
Bueno sabiendo que el menu funciona ya correctamente (gracias Buhonero ;)) No me preocupa mucho esto, ya que se puede arreglar en los retoques finales. Esto en si, es solo estetica.
Lo que me preocupa es lo de la pantalla en negro. Me he mirao el codigo varias veces incluso comparandolo con el del tutorial y no logro dar con el error.
Bueno gracias a todos ;)
< - >
Uy que te me has adelantado, voy a probar lo del scroll..
BUHOnero
26/09/2007, 18:35
a mi me llega a poner negro, y me salta el error de que no existe el grafico, si el grafico es el fondo y no tiene scroll no crees un scroll, haz un put_screen y ya ta, sin scroll
< - >
para que suba:
if(y==150) y=30; end
esto despues de comprobar el up y el down, lo que dices es que si bajas por debajo de la ultima opcion, que vuelva a la primera :brindis:
hellcross
26/09/2007, 18:47
Ok muchas gracias. Cada dia se aprende mas aqui ;)
Sobre lo del error... a mi no me salta ningun error. Se me queda en negro sin mas. Ahora que lo pienso, quiza el put_screen sea mas apropiado para esto... xD
Tengo que experimentar mas para familiarizarme con el lenguaje ;)
BUHOnero
26/09/2007, 18:53
así lo he dejado yo... que toy en el curro y no puedo mirarmelo con calma :brindis:
//-----------------------------------------------
//Program: Clock Tower for Gp32
//Author: Dariogdm (hellcross)
//Team: Mp2 ent
//-----------------------------------------------
Program ClockTower;
//establecemos variable global
Global
int file1;
//variables de las fuentes
int select_fnt;
int title_fnt;
int file2;
Int level=1;
int selection;
//variables del personaje
int mychar_position_X=0;
int Mychar_position_y=318;
//variable del sonido
int sonido;
//inicio del programa
Begin
set_mode(320,240,16);
set_fps(32,1);
//se cargan las fuentes
file1=load_fpg("menuuu.fpg");
select_fnt=load_fnt("select.fnt");
title_fnt=load_fnt("titlescr.fnt");
//se carga la musica
sonido = load_wav("C:\Documents and Settings\Dario\Escritorio\FENIX GP32\Clock Tower GP32 beta\Sonidos\OPENING.wav");
//imagenes previas
play_wav(sonido,0);
file2=load_fpg("menus.fpg");
put_screen(file2,3);
/*Loop
Frame 8000;
set_mode (320,240,16);
put_screen(file2,2);
frame 8000;
set_mode (320,240,16);
put_screen(file2,4);
frame 8000;
stop_wav(sonido);
unload_wav(sonido);
break;
end*/
Loop
if(level == 1)
//
put_screen(file1,605);
//opciones a elegir en el menu
write(select_fnt,0,30,25,"game start");
write(select_fnt,0,60,25,"quick start");
write(select_fnt,0,90,25,"continue");
write(select_fnt,0,120,25,"ending list");
write(select_fnt,0,150,25,"exit");
//llamamos a la variable del cursor
cursor();
Loop
if(selection==1) level=2 ;frame; break;end;
if(selection==2) level=3 ; frame; break;end;
if(selection==3) fade_off();exit("gracias por jugar") ;end
frame;
end
fade_off();
delete_text(0);
clear_screen();
let_me_alone();
fade_on();
frame;
end
if(level == 2)
//quitar musica
stop_wav(sonido);
unload_wav(sonido);
//sobre el caracter
Mycharacter(mychar_position_X,MyChar_Position_Y);
start_scroll(0,file1,300,320,240,16);
//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;
frame;
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;
frame;
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;
frame;
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
end
//proceso cursor
Process cursor()
Private
int c;
BEGIN
file=file1;
graph=5;
x=0;
y=30;
c=3; //efecto tembleque
selection=0;
while (not key(_enter)and selection==0)
if (key (_up)) y=30; while(key (_up))frame;end end
if (key(_down)) y+=30;while(key (_down))frame;end end
/*if (key(_down)) y=90;while(key (_down))frame;end end
if (key(_down)) y=120;while(key (_down))frame;end end
if (key(_down)) y=150;while(key (_down))frame;end 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
frame;
end
//proceso personaje
Process Mycharacter (X,Y)
Begin
file1=load_fpg("file1.fpg");
ctype=c_scroll;
scroll[0].camera=id;
graph=10;
angle=0;
loop
if (key(_right) and not key(_UP) and not key(_down))
X=X+2;
if (graph<=10 or graph>=13)graph=10;end;
graph=graph+1;
flags=0;
end
if (key(_left) and not key(_UP) and not key(_DOWN))
x=X-2;
if (graph<=10 or graph>=13)graph=10;end;
graph=graph+1;
flags=1;
end
if (key(_up) and not key(_left) and not key(_right))
y=Y-2;
if (graph<=6 or graph>=9)graph=6;end;
graph=graph+1;
end
if (key(_down) and not key(_left) and not key(_right))
y=Y+2;
if (graph>=3);graph=1;end
graph=graph+1;
end
frame;
End //LOOP
end
hellcross
27/09/2007, 14:14
He probado tu codigo y lo unico que has hecho ha sido quitar las imagenes iniciales? ah tampoco sale en negro, sale del programa directamente... no entiendo que has hecho... He visto que el codigo ha cambiado.
BUHOnero
27/09/2007, 16:39
he desactivado las imagenes para ir la menu directamente, a mi me va al menu, y cuando pulso en start me da el error de que falta el grafico
hellcross
27/09/2007, 17:03
A mi esque no me da ningun error jajaja
De todas formas, el grafico existe...
BUHOnero
27/09/2007, 17:38
el 302¿?
< - >
perdón, el 320¿? porque a mi si que me da error, selecciono la primera opcion del menu
hellcross
27/09/2007, 17:43
Si, el 320 existe en el "menus.fpg"
A mi no me da ningun error simplemente se sale. Pero sabiendo que no tengo que usar scroll supongo que no sera problema...
BUHOnero
27/09/2007, 17:48
es que no busca en menus, busca en menuuu.fpg el grafico 320
< - >
en nigun fpg de los que pasaste existe un grafico 320, no te sería mas facil usar un solo fpg¿?
< - >
tienes un error grave en el tema de los fpg, el file1 carga diferentes fpgs a la vez, y creo que el programa se hace un lío, primero dices:
file1=load_fpg("menuuu.fpg");
Pero luego dentro del proceso del personaje dices:
file1=load_fpg("file1.fpg");
file1 valdrá lo ultimo que cargues, no las dos cosas a la vez, esto puede ser uno de tus problemas
como va eso hellcross vas avanzando? que no se diga que nos quedamos sin un clocktower para gp32 porque te has atascado y no te ayudamos :D que tal lo llevas necesitas ayuda?
Aiken
BUHOnero
01/10/2007, 09:11
Ahora que reflotas, Aiken, he mirado el codigo de mi Camelot, y del GPrina, y yo nunca pongo ese End al final de las variables Globales... supongo que por eso lo considero parte del codigo principal del programa :brindis:
Ahora que reflotas, Aiken, he mirado el codigo de mi Camelot, y del GPrina, y yo nunca pongo ese End al final de las variables Globales... supongo que por eso lo considero parte del codigo principal del programa :brindis:
jaja, ahora que estoy trabajando con C++, me he dado cuenta que en C++ no se pone, en Fenix yo juraria que si, lo mismo me estoy liando, o lo mismo si se pone no hace nada pero tampoco da error :D
Aiken
hellcross
01/10/2007, 15:50
Pues ahi va. El menu se quedo guay. La verdad esque ahora no tengo mucho tiempo.Eso si, he intentado poner una imagen despues de elegir en el menu "Ending List" y no me sale. Se sigue quedando colgado :confused:
Tambien lo meti en la GP32 pa ver que tal... pero no se oye la musica...
En fin... Gracias a todos chicos ;)
Espero que el proyecto, aunque tarde, se acabe. hare todo lo que pueda por el Clock tower en la gp32, si señor!
y tras estas palabras de animo... Que no muera la comunidad o yo mismo antes de que acabe el juego.. waaa!!
BUHOnero
01/10/2007, 17:03
Pues ahi va. El menu se quedo guay. La verdad esque ahora no tengo mucho tiempo.Eso si, he intentado poner una imagen despues de elegir en el menu "Ending List" y no me sale. Se sigue quedando colgado :confused:
Tambien lo meti en la GP32 pa ver que tal... pero no se oye la musica...
En fin... Gracias a todos chicos ;)
Espero que el proyecto, aunque tarde, se acabe. hare todo lo que pueda por el Clock tower en la gp32, si señor!
y tras estas palabras de animo... Que no muera la comunidad o yo mismo antes de que acabe el juego.. waaa!!
estamos aquí para lo que se tercie, tu a tu ritmo :D y ves informando, en cuanto tenga tiempo te rehago el código :) además me estoy planteando seriamente hacer un BUEN tutorial de Fenix para que todos puedan hacer alguna chapucilla, y nada de solo el esqueleto, quiero hacer algo más serio, a ver si consigo tirarlo palante :brindis:
hellcross
01/10/2007, 18:05
Eres un maquina tio ;)
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.