PDA

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.

juanvvc
08/11/2009, 13:34
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

Keinel
17/11/2009, 18:17
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