Ver la versión completa : cambiar de nivel
serlioner
08/11/2009, 12:51
hola, estoy intentando hacer q mi juego cmbie de nivel al llegar a unas coordenadas pero no logro conseguirlo, podrian ponerme una forma facil de hacerlo o decirme donde puedo encontrar un ejemplo que me sirva, gracias de antemano.
Yo haría algo asín:
nivel = 0;
loop
inicia_procesos(nivel); // carga todos los procesos de un nivel
loop // bucle principal del juego
frame;
if(x>X_FIN_DE_NIVEL) break; end // juega hasta que llegues a unas coordenadas determinadas
end
let_me_alone(); // mata todos los procesos del nivel anterior
nivel = nivel + 1;
end
serlioner
08/11/2009, 15:57
haber seria algo asi?
Switch (nivel) // Bucle para niveles
Case 1: // Inicializa nivel uno
loop
juego();
End
// cambiamos al siguiente proceso
frame;
if(x>600) break; end // juega hasta que llegues a unas coordenadas determinada
end
// dejadme solo que han pulsado escape para terminar
let_me_alone();
nivel = nivel + 1;
end
process juego()
start_scroll(0,0,fondo,0,0,0);
// iniciamos al personaje y le ponemos como camara.
scroll[0].camera=personaje();
// Ponemos los items en las posiciones que queremos.
item(100,170);
item(160,170);
item(240,170);
item(500,170);
item(400,170);
item(240,100);
item(300,100);
item(800,170);
item(600,100);
play_song(iddisparo,256);
// Ponemos los enemigo donde queremos.
enemigo(300,150);
enemigo(700,100);
enemigo(600,200);
// Bucle principal
loop
// Para salir del programa.
if(key(_esc))
break;
end
// cambiamos al siguiente proceso
frame;
end
// dejadme solo que han pulsado escape para terminar
let_me_alone();
end
< - >
me da errores al compilar
Segata Sanshiro
08/11/2009, 16:05
me da errores al compilar
Pues lee los errores, que suelen decir qué es lo que falla y en qué línea :p Es posible que te falte algún punto y coma.
masteries
08/11/2009, 16:44
Otra forma es pintar un sprite totalmente cuadrado con la variable alpha=0 (no se dibujará y tampoco consumirá recursos como si fuese transparente-visible) y si dicho sprite está en pantalla (se mira con "out_region", cuando su resultado sea 0) entonces miras si hace colisión con el personaje.
Este método te permite cambiar de posición el punto de salida del nivel rápidamente, o poner varios puntos de salida; por si se puede salir del nivel por diferentes sitios.
serlioner
08/11/2009, 17:29
losiento por ser tan molesto pero esque acabo de dempezar con el fenix y estoy un poco liado, tengo echo esto pero me da el error:at line 0: "CASE" expected (EOF)
Switch (nivel) // Bucle para niveles
case 1:
loop
start_scroll(0,0,fondo,0,0,0);
// iniciamos al personaje y le ponemos como camara.
scroll[0].camera=personaje();
// Ponemos los items en las posiciones que queremos.
item(100,170);
item(160,170);
item(240,170);
item(500,170);
item(400,170);
item(240,100);
item(300,100);
item(800,170);
item(600,100);
play_song(iddisparo,256);
// Ponemos los enemigo donde queremos.
enemigo(300,150);
enemigo(700,100);
enemigo(600,200);
frame;
if(x>600) break; end // juega hasta que llegues a unas coordenadas determinadas
end
let_me_alone(); // mata todos los procesos del nivel anterior
nivel = nivel + 1;
end
case 2:
start_scroll(0,0,fondo,0,0,0);
// iniciamos al personaje y le ponemos como camara.
scroll[0].camera=personaje();
// Ponemos los items en las posiciones que queremos.
item(100,170);
item(160,170);
item(240,170);
item(500,170);
item(400,170);
item(240,100);
item(300,100);
item(800,170);
item(600,100);
play_song(iddisparo,256);
// Ponemos los enemigo donde queremos.
enemigo(300,150);
enemigo(700,100);
enemigo(600,200);
loop
// Para salir del programa.
if(key(_esc))
break;
end
// cambiamos al siguiente proceso
frame;
end
// dejadme solo que han pulsado escape para terminar
let_me_alone();
end
Rivroner
08/11/2009, 19:01
Te sobra un end, posiblemente el de debajo del frame;
serlioner
08/11/2009, 22:17
ok gracias, aunque ese no es ya el miercoles que termino los examenes seguire probando
hola, yo estoy intentandolo mediante procesos, por medio de que si el personaje choca con un objeto nivel sea igual a true, en el proceso principal del juego pongo que si nivel es igual a true se borre el proceso, pero como ago para q pase al siguiente proceso? grax por adelantado^^
GameMaster
17/11/2009, 18:28
Es facil, en antiguo proceso no lo tienes que borrar, lo borras despues de pasar.
O sea, con una colision seria en lineas generales (pseudocodigo):
if (prota colision casa)
pasarnivel();
frame;
end
despues en el nuevo pondrias un let_me_alone para matar todo lo anterior:
pasarnivel()
begin
letmealone();
fasedos();
....
end
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.