Marcianitos

Started by Yawin, November 16, 2010, 08:53:33 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Yawin

#15
Bueno, he estado metiéndole mano, y he hecho una nueva versión. Ahora, las naves tienen 3 vidas:

http://pensarescompartir.com/Marcianitos_noiso.rar
ISO: http://pensarescompartir.com/Marcianitos.rar

________________________________________________________________________________

edit (por no hacer doblepost):
Bueno, he empezado con el modo arcade del juego. De momento esto es lo que llevo:

import "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; //Retardo del arma
retard=10; //Retardo de los paquetes
end

global
int puntuaciones[5];
int graficos;
int sonn[2];
int nav=0; //Gráfico del jugador
int conts, rdis=0;
int punt=0, matados=0, lvl=1, puntf=0, matadosf=0;
int pnav, plvl, pboss; //Id de los procesos nave, nivel y boss.
int bossmuerto=0; //Indentifica si el boss del nivel ha muerto;
int tmp, preloj, bss; //tmp=Tiempo de nivel, preloj=ID del proceso reloj, bss=contador de tiempo del boss;
int energia_jugador=200, mejora=3, vidas=3; //Energía, arma y vidas del jugador

int salir=0;
//int punt2=100, matados2=0;
end

process Main()
begin
set_mode(640,480,32,MODE_FULLSCREEN);
set_fps(60,1);
graficos=load_fpg("dll\prueba.fpg");
sonn[0]=load_wav("sounds\054-Cannon03.ogg");
sonn[1]=load_wav("sounds\057-Wrong01.wav");
set_wav_volume(sonn[0],35);

pantalla_sel();
repeat
frame;
until(nav!=0 or(key(_esc)));

if(nav!=0)
////////////////////////////////////////////
if(nav==1)
//Se llama a la nave verde
end
if(nav==2)
//Se llama a la nave naranja
end
////////////////////////////////////////////

for(lvl=1; lvl<5 or salir!=1; lvl++)

//Guardamos la puntuación total y reseteamos la puntuación de nivel
puntf+=punt;
matadosf+=matados;

punt=0;
matados=0;
////////////////////////////////////////////////////////////////////

write(0,51,40,1," Tu puntuación");
write_var(0,51,50,1,punt);
write(0,60,65,1," Naves destruidas");
write_var(0,50,75,1,energia_jugador);

//Llamamos al nivel
plvl=entreboss(lvl);
////////////////////

repeat
if(key(_esc))
while(key(_esc))
frame;
end
salir=1;
end
frame;
until(bossmuerto==1 or salir==1)
bossmuerto=0;
end
end
let_me_alone();
end

process reloj(int boss) //Este proceso calcula el tiempo que se lleva jugando un nivel.
private
int i;
end
begin
tmp=0;
bss=0;
loop
for(i=0; i<60; i++)
frame(5);
end
if(boss==0)
tmp+=1;
else
bss+=1;
end
end
end

process Entreboss(int nivel)
private
int modi;
end
begin
preloj=reloj(0);
switch(nivel)
case 1:
//Nivel 1 //////////////////////////////////////////////////////////////////////////////////////////////////
modi=100;
pnav=nave();
Start_scroll(0,graficos,1,0,0,2);
conts=retard;
repeat
modi=punt+100;
if(tmp<1200)
scroll[0].y0=scroll[0].y0-2;

//Llamamos a paquete de mejora
if(rand(1,1000)<=rand(1,15))
conts-=1;
if(conts<=0)
paquete_mejora(rand(0,640),rand(3,4));
conts=retard;
end
end
/////////////////////////////////////////////////////////////

//Llamamos a enemigos////////////////////////////////////////
if(rand(0,100)<(modi/100))
enemigo(rand(0,640), rand(-3,3),rand(1,3));
end
/////////////////////////////////////////////////////////////

frame;
else
//Paramos el tiempo
signal(preloj,s_kill);
frame;
//Llamar al boss
end
until(bossmuerto==1);
signal(pnav, s_kill);
//Fin del nivel 1 //////////////////////////////////////////////////////////////////////////////////////////
end
case 2:
//Nivel 2
end
default:
frame;
end
end
end

//Pantalla de selección
process pantalla_sel()
private
int sel=1;
end
begin
graph=57;
Z=-1;
repeat
Put_screen(graficos,58);
switch(sel)
case 1:
X=167;
Y=293;
end
case 2:
X=441;
Y=293;
end
end

if(key(_right))
while(key(_right))
frame;
end
sel+=1;
end
if(key(_left))
while(key(_left))
frame;
end
sel-=1;
end

if(sel>2)
sel=1;
end
if(sel<1)
sel=2;
end
frame;
until(key(_enter))

switch(sel)
case 1:
nav=1;
end
case 2:
nav=2;
end
end
end
//Fin del proceso "Pantalla de selección

//Enemigos básicos
process enemigo (x,int inc_x,int inc_y)
private
int ID_disparo_acertado,cont;
int energia=0, daño;
int vidadm, sizmax, moddaño;
end
begin
switch(lvl)
case 1:
vidadm=0;
moddaño=0;
sizmax=91;
end
case 2:
vidadm=1;
moddaño=10;
sizmax=103;
end
case 3:
vidadm=3;
moddaño=20;
sizmax=141;
end
case 4:
vidadm=6;
moddaño=30;
sizmax=191;
end
end

Size=rand(65,sizmax);

if (size>=65 and size<78)
Graph=4;
energia=1+vidadm;
daño=1+moddaño;
else
if(size>=78 and size<91)
Graph=5;
energia=1+vidadm;
daño=5+moddaño;
else
if(size>=91 and size<103)
Graph=6;
energia=2+vidadm;
daño=10+moddaño;
else
if(size>=103 and size<141)
Graph=7;
energia=3+vidadm;
daño=20+moddaño;
else
Graph=7;
energia=4+vidadm;
daño=30+moddaño;
end
end
end
end
if(inc_x==0)
inc_x+=1;
end
Y=-40;
repeat
X=X+inc_x;
Y=Y+inc_y;

ID_Disparo_acertado=collision(type disparo);
if (ID_disparo_acertado !=0)
signal(ID_disparo_acertado,s_kill);
energia=energia-1;
if (energia==0)
punt+=size/10;
matados+=1;
play_wav(sonn[0],0);
break;
end
end
if(collision (type nave))
energia_jugador=energia_jugador-daño;
mejora=3;
rdis=0;
punt+=size/10;
play_wav(sonn[0],0);
break;
end
frame;
until (y > 520 or x < -20 or x > 670)
for(cont=8;cont<=32;cont++)
graph=cont;
frame;
end
end
//Fin del proceso "Enemigos básicos"

//nave jugadora
process nave ()
private
int cont=0;
end
begin
//Cargamos el color y posición de la nave)
switch(nav)
case 1:
graph=2;
end
case 2:
graph=42;
end
end

X=320;
Y=470;
////////////////////////////////////////////

loop
cont=cont-1;
If(cont<0) cont=0; end
If (key(_up)) y-=7; end
If (key(_down)) y+=7; end
If (key(_left)) x-=7; end
If (key(_right)) x+=7; end
If (x>627) x=627; end
If (x<13) x=13; end
If(y>470) y=470; end
If(y<200) y=200; end

//Armas
if (key(_x))
if(cont==0)
cont=retardo-rdis;
switch(mejora)
case 34:
disparo(X-2, Y-2);
disparo(X+2, Y-2);
end
case 35:
disparo(X-4, Y-2);
disparo(X, Y-2);
disparo(X+4, Y-2);
end
case 39:
disparo(X-6, Y-2);
disparo(X-2, Y-2);
disparo(X+2, Y-2);
disparo(X+6, Y-2);
end
case 41:
disparo(X-8, Y-2);
disparo(X-4, Y-2);
disparo(X, Y-2);
disparo(X, Y-2);
disparo(X+4, Y-2);
disparo(X+8, Y-2);
end
default:
disparo(X, Y-2);
end
end
play_wav(sonn[1],0);
end
end
///////////////////////////////////////////////////////

frame;

if(energia_jugador<=0)
energia_jugador=200;
vidas-=1;
break;
end
end
for(cont=8;cont<=32;cont++)
Graph=cont;
frame;
end
if(vidas>0)
pnav=nave();
else
salir=1;
end
end
//Fin del proceso nave jugadora

//Disparo láser
process disparo(X,Y)
begin
Y=Y;
X=X;
Z=1;

repeat
graph=mejora;
y=y-15;
frame;
until (y < -15)
end
//Fin del proceso "Disparo láser

process paquete_mejora (x, int inc_y)
private
INT ID_disparo_acertado, cont;
INT tipo, mejor, rdistr, graf;
END
begin
Size=100;
Y=-40;
tipo=rand(1,4);
switch(tipo)
case 1:
mejor=34;
Graph=36;
rdistr=3;
end
case 2:
mejor=35;
Graph=37;
rdistr=6;
end
case 3:
if(Punt>300)
mejor=39;
Graph=38;
rdistr=8;
else
mejor=34;
Graph=36;
rdistr=3;
end
end
case 4:
if(Punt>500)
mejor=41;
Graph=40;
rdistr=9;
else
mejor=35;
Graph=37;
rdistr=6;
end
end
end
repeat
X=X;
Y=Y+inc_y;
ID_Disparo_acertado=collision(type disparo);
if (ID_disparo_acertado !=0)
signal(ID_disparo_acertado, s_kill);
mejora=mejor;
rdis=rdistr;
break;
end
if(collision (type nave))
mejora=mejor;
break;
end
frame;
until (y > 520)
for(cont=8;cont<=32;cont++)
graph=cont;
frame;
end
end

//BOSS
process boss(int lev)
private
int vida;
end
begin
switch(lev)
case 1:
//Animación de bajada
repeat

until(bss>120);
//Fin de la animación

//Batalla
repeat

until(vida<=0);
//Fin de batalla

//Animación de fin de batalla
repeat

until(bss>120);
//Fin de la animación
end
case 2:
//Animación de bajada
repeat

until(bss>120);
//Fin de la animación

//Batalla
repeat

until(vida<=0);
//Fin de batalla

//Animación de fin de batalla
repeat

until(bss>120);
//Fin de la animación
end
case 3:
//Animación de bajada
repeat

until(bss>120);
//Fin de la animación

//Batalla
repeat

until(vida<=0);
//Fin de batalla

//Animación de fin de batalla
repeat

until(bss>120);
//Fin de la animación
end
case 4:
//Animación de bajada
repeat

until(bss>120);
//Fin de la animación

//Batalla
repeat

until(vida<=0);
//Fin de batalla

//Animación de fin de batalla
repeat

until(bss>120);
//Fin de la animación
end
end
end


La verdad es que me siento orgulloso de lo que he hecho para controlar los niveles y los bosses xD
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

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

NesKy

He ejecutado el juego en linux, me salta la pantalla completa correctamente pero cuando le doy a empezar se me cuelga, sabes que podria ser?

Yawin

podría ser el sonido. A un amigo le solía dar problemas. La cosa es que como yo uso windows, soy un ignorante en cuanto a problemas que pueden surgir con linux xD
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

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

DCelso

lo más usual son los nombres de los recursos, windows es case insensitive y linux es case sensitive (sensible a mayusculas y minúsculas).
Esto quiere decir que en windows hay que tener especial cuidado en los load_(wav,bmp,fpg, etc) para que carguen el nombre exacto respetando mayúsculas y minúsculas que se le puso en el explorador de archivos.
Monstruos Diabólicos

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

Futu-block

Vale, probado, y esta bien, lo que pasa que ha llegado un momento que estaba la pantalla petada de naves...
por otro lao, no te has calentao mucho el coco con el tema de los graficos; yo le quitaria lo transparente de los ojos...

marcianitos era una peaso wel

Yawin

No es que no me haya calentado los cascos con los gráficos, esque opino que no requieren más.
Porque, los meúns y el fondo del juego si está currado (no mucho, pero sí lo suficiente).
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

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

Futu-block

El fondo del menú me recuerda una jartá al front end del mame, es muy parecio...

Yawin

#22
Nunca he jugado a ese juego xD

Ese tipo de imágenes son de las pocas "chorradillas" que se hacer con el Photoshop xD
_____________________________________________________

Bueno, esto es una demo del boss del level 3. Para que me deis vuestras opiniones.

http://www.pensarescompartir.com/lahsoft/lahsoftcorp/?direc=fenix/&id=demo_boss3.rar

Los controles como siempre. Flechas moverse y "X" disparar. Para salir "ESC".
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

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

FreeYourMind

El front end que dice no es un juego, pero un background/skin del Mame  ;D

Yawin

ammm, pos no tenía ni idea xD
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

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

Yawin

Acabo de terminar la v1 del arcade del juego.  Sería de agradecer que lo probaseis y me dieseis vuestras opiniones.
http://pensarescompartir.com/lahsoft/lahsoftcorp/?direc=fenix/&id=Marcianitos_(Modo_arcade).rar

Nota: no tiene músicas.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

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

lord103

Esta muy bueno, pero te maldigo, tuve que dejar de programar para quitarme las ganas que tenia de jugar megaman 2 ;D

Yawin

jajajaja, pero...
en la versión acabo de subido, no hay música.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

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

NesKy

Has podido arreglar el problemilla para que no pete en Linux? Asi ya lo instalo directamente en Win7.

Yawin

Si el problema eran los sonidos si xD

Esta semana he instalado el ubuntu en mi portatil, asi que ahora, siempre que subra algo, sabré que funciona en linux.

Lo único, no tiene la shell hecha para llamar al bgdi xD
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

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