//------------------------------------------------------------------------------
// Autor: yoshi-roy (Pablo Antonio Navarro Reyes)
// Fecha: 10/07/2001
// Título: Matamarcianos 2001
// Dirección de e-mail: yoshi-roy@mixmail.com
//------------------------------------------------------------------------------

PROGRAM Matamarcianos_2001;

GLOBAL
	estelas;
	velestela;
    musicaintro;
    plyin;
    masacre;
    string   pumba1;
    string   pumba2;
    int amparo;
    int muerte1;
    int muerte2;
    int risas_final;
    int pum1;
    int pum2;
    int loa;
    int jefe;
    int disparar1;
    int disparar2;
int     lun; //detecta si se debe colocar el gráfico de la luna
int     matamatas; //detecta cuantos jugadores juegan
int     luna; //identificador del texto de la luna
int     marte; //identificador del texto de marte
int     mercurio;
int     la_tierra;
int     rapidez; //para indicar los frames por segundo luego
int     kieto; //para saber si se puede disparar o no
int     randal; //dato aleatorio para averiguar que objeto caerá al destruir un marciano verde
int     gigmuerto=1; //para saber cuantos marcianos grandes hay ya muertos
int     gig=15; //vida del marciano gigante
int     marcianos=18; //numero de marcianos en pantalla
int     opcion; //opcion del menu principal
int     fuente; //fuente que va a ser usada en el juego
int     vidas1=4; //vidas predefinidas del primer jugador
int     vidas2=4; //vidas predefinidas del segundo jugador
int     muerto1; //detecta si el primer jugador ha muerto
int     muerto2; //detecta si el segundo jugador ha muerto
int     disparo1=1; //detecta si el disparo del primer jugador se ha producido
int     disparo2=1; //detecta si el disparo del segundo jugador se ha producido
int     disparo3; //detecta si el disparo del marciano se ha producido
int     marci; //detecta la posicion de los marcianos para luego redirigirlos
int     marcir; //detecta la posicion de los marcianos para luego redirigirlos
int     marciv; //detecta la posicion de los marcianos para luego redirigirlos
int     lao; //detecta a que lado se dirigen los marcianos
int     laor; //detecta a que lado se dirigen los marcianos
int     laov; //detecta a que lado se dirigen los marcianos
int     marci2; //detecta la posicion de los marcianos para luego redirigirlos
int     marcir2; //detecta la posicion de los marcianos para luego redirigirlos
int     marciv2; //detecta la posicion de los marcianos para luego redirigirlos
int     lao2; //detecta a que lado se dirigen los marcianos
int     laor2; //detecta a que lado se dirigen los marcianos
int     laov2; //detecta a que lado se dirigen los marcianos
int     marci3; //detecta la posicion de los marcianos para luego redirigirlos
int     marcir3; //detecta la posicion de los marcianos para luego redirigirlos
int     marciv3; //detecta la posicion de los marcianos para luego redirigirlos
int     lao3; //detecta a que lado se dirigen los marcianos
int     laor3; //detecta a que lado se dirigen los marcianos
int     laov3; //detecta a que lado se dirigen los marcianos
int     marci4; //detecta la posicion de los marcianos para luego redirigirlos
int     marcir4; //detecta la posicion de los marcianos para luego redirigirlos
int     marciv4; //detecta la posicion de los marcianos para luego redirigirlos
int     lao4; //detecta a que lado se dirigen los marcianos
int     laor4; //detecta a que lado se dirigen los marcianos
int     laov4; //detecta a que lado se dirigen los marcianos
int     marci5; //detecta la posicion de los marcianos para luego redirigirlos
int     marcir5; //detecta la posicion de los marcianos para luego redirigirlos
int     marciv5; //detecta la posicion de los marcianos para luego redirigirlos
int     lao5; //detecta a que lado se dirigen los marcianos
int     laor5; //detecta a que lado se dirigen los marcianos
int     laov5; //detecta a que lado se dirigen los marcianos
int     marci6; //detecta la posicion de los marcianos para luego redirigirlos
int     marcir6; //detecta la posicion de los marcianos para luego redirigirlos
int     marciv6; //detecta la posicion de los marcianos para luego redirigirlos
int     lao6; //detecta a que lado se dirigen los marcianos
int     laor6; //detecta a que lado se dirigen los marcianos
int     laov6; //detecta a que lado se dirigen los marcianos
int     marci7; //detecta la posicion de los marcianos para luego redirigirlos
int     marcir7; //detecta la posicion de los marcianos para luego redirigirlos
int     marciv7; //detecta la posicion de los marcianos para luego redirigirlos
int     lao7; //detecta a que lado se dirigen los marcianos
int     laor7; //detecta a que lado se dirigen los marcianos
int     laov7; //detecta a que lado se dirigen los marcianos
int     marci8; //detecta la posicion de los marcianos para luego redirigirlos
int     marcir8; //detecta la posicion de los marcianos para luego redirigirlos
int     marciv8; //detecta la posicion de los marcianos para luego redirigirlos
int     lao8; //detecta a que lado se dirigen los marcianos
int     laor8; //detecta a que lado se dirigen los marcianos
int     laov8; //detecta a que lado se dirigen los marcianosint
int     musica1; //musica????
int     musica2;
int     musica3;
int     musica4;
int     musica5;
int     ies8;

BEGIN
    plyin=0;
    text_z = -512; //para que el texto este encima del resto de los             //gráficos
    LOAD_FPG("mm.fpg"); //fichero para graficos
    musica();
    set_fps(20,0);
    set_mode(m320x200);
    put_screen(0,50);
    //fade_on();
    timer[6]=0;
    while(timer[6]<300);
        frame;
        end
    //fade_off();
    put_screen(0,51);
    //fade_on();
    timer[6]=0;
    while(timer[6]<300);
        frame;
        end
    //fade_off();

    clear_screen();
    fuente=LOAD_FNT("mm.fnt"); //aqui cargamos la fuente que va a ser usada en el juego
    SET_MODE(m320x200); //modo gráfico
    ani_giro(); //animación de la luna y de marte
    ani_giro2(); //animación de los asteroides
    ani_giro3(); //animación del circulo que aparece tras algunos textos
    titulo(); //titulo, presentacion
    //fade_on();
    loop //repite las sentencias colocadas entre loop y end
    //todos los "if(key(___))" detectan si la tecla definida ha sido pulsada
    //write escribe un texto en las coordenadas predefinidas
        if(key(_control)) opcion=1; frame; break; end //si pulsas 1 pone opcion=1 y sale del bucle
        if(key(_2)) opcion=2; frame; break; end //si pulsas 2 pone opcion=2 y sale del bucle
        if(key(_3))
            delete_text(all_text); //borra el texto
            write(fuente,160,90,0,"  JUGADOR 1   ");
            write(fuente,160,120,0,"    RATON     ");
            write(fuente,160,150,0,"  JUGADOR 2   ");
            write(fuente,160,180,0,"FLECHAS Y CRTL");
            repeat //repite las sentencias colocadas entre repeat y until
                frame; //para que no se bloquee el proceso
            until(key(_space) or key(_esc) or key(_enter)) //hasta que sea pulsada alguna de las teclas
            delete_text(all_text); //borra el texto
            write(fuente,160,90,0,"1.UN JUGADOR");
            write(fuente,160,120,0,"2.DOS JUGADORES");
            write(fuente,160,150,0,"3.VER CONTROLES");
            write(fuente,160,180,0,"4.SALIR");
        frame; //para que no se bloquee el proceso
    end

        if(key(_4)) opcion=4; frame; break; end //si pulsas 4 pone opcion=4 y sale del bucle
        FRAME; //para que no se bloquee el proceso
    END //fin de bucle o proceso
    //fade_off(); //pasa a negro la pantalla
    delete_text(all_text); //borra_texto(todo_el_texto), se entiende
    pum1=load_wav("disparo1.wav");
    pum2=load_wav("disparo2.wav");
    if(opcion==1) //detecta si la opcion uno ha sido elegida y pone los marcianos y al primer jugador
        matamatas=1;
        pon_vida();
        mm1();
        lun=1;
        pon_marcianos();
        //fade_on();
       galaxi();
        repeat
            frame;
            randal=rand(0,6);
            if(disparo1>3) disparo1=3; end
            if(muerto1==1 and vidas1>0) signal(disparar1,s_kill); mm1(); frame; end
        until(key(_esc) or vidas1==0)
        creditos();
        frame;
        end
    if(opcion==2)
        matamatas=2;
        pon_vida();
        mm1();
        mm2();
        lun=1;
        matamatas=2;
        pon_marcianos();
        //fade_on();
        repeat
            frame;
            randal=rand(0,6);
            if(disparo1>3) disparo1=3; end
            if(disparo2>3) disparo2=3; end
            if(muerto1==1 and vidas1>0) mm1(); signal(disparar1,s_kill); frame; end
            if(muerto2==1 and vidas2>0) mm2(); frame; end
            frame;
        until(key(_esc) or vidas1==0 and vidas2==0)
        creditos();
        frame;
        end
    if(opcion==4) exit(0,0); frame; end
END

PROCESS mm1();
BEGIN
    velocidad();
    vidas1-=1;
    muerto1=0;
    y=195;
    graph=38;
    z=2;
    repeat
        x=mouse.x;
        frame;
        if(mouse.left and disparo1>0 and kieto==0 or mouse.right and disparo1>0 and kieto==0) disparar1=dispar1(x,y-1); frame; while(mouse.left) frame; end end
    until(collision (type disparrojo) or collision(type marciblanco) or collision(type marciverde) or collision(type marcirojo) or collision(type marcigante) or collision(type jefe_))
    disparo1=1;
    from graph=10 to 24;
        frame;
        end
    muerto1=1;
END

PROCESS mm2();
BEGIN
    vidas2-=1;
    muerto2=0;
    y=195;
    x=160;
    graph=40;
    z=3;
    repeat
        if(key(_left) and x>32) x-=32; frame; end
        if(key(_right) and x<288) x+=32; frame; end
        if(key(_control) and disparo2>0 and kieto==0) dispar2(x,y); frame; end
        frame;
    until(collision (type disparrojo) or collision(type marciblanco) or collision(type marciverde) or collision(type marcirojo) or collision(type marcigante) or collision(type jefe_))
    disparo2=1;
    from graph=10 to 24;
        frame;
        end
    muerto2=1;
END

PROCESS titulo()
BEGIN
    write(fuente,160,90,0,"1.UN JUGADOR");
    write(fuente,160,120,0,"2.DOS JUGADORES");
    write(fuente,160,150,0,"3.VER CONTROLES");
    write(fuente,160,180,0,"4.SALIR");
    x=160;
    y=100;
    graph=1;
    z=2;
        repeat
            frame;
        until(key(_control) or key(_2) or key(_4))
        frame;
END

PROCESS ani_giro()
BEGIN
    x=160;
    y=100;
    size=0;
    graph=26;
    z=50;
    repeat
        if(lun==1) luna=write(fuente,0,0,0,"LA LUNA"); lun-=1; end
        angle+=1000;
        frame;
    until(gigmuerto==2)
    repeat
        angle+=1000;
        size+=5;
        frame;
    until(gigmuerto==3)
    delete_text(luna);
    pon_vida();
    marte=write(fuente,0,0,0,"MARTE");
    from graph=10 to 20; frame; end
    size=0;
    graph=5;
    repeat
        size+=5;
        angle+=1000;
        frame;
    until(size==150)
    kieto=0;
    repeat
        angle+=1000;
        frame;
    until(gigmuerto==5)
    repeat
        size+=5;
        angle+=1000;
        frame;
    until(gigmuerto==6)
    delete_text(marte);
    pon_vida();
    mercurio=write(fuente,0,0,0,"MERCURIO");
    from graph=10 to 20; frame; end
    size=0;
    graph=6;
    repeat
        size+=5;
        angle+=1500;
        frame;
    until(size==150)
    repeat
        angle+=1000;
        frame;
    until(gigmuerto==7)
    disparo3=-1;
    repeat
        size+=5;
        angle+=1000;
        frame;
    until(gigmuerto==8)
    from graph=10 to 20; frame; end
    delete_text(mercurio);
    la_tierra=write(fuente,0,0,0,"LA TIERRA");

    size=0;
    graph=9;
    repeat
        size+=5;
        angle+=1000;
        frame;
    until(gigmuerto==9)
    set_fps(5,0);
    from graph=10 to 15; frame; end
    from graph=15 to 10; frame; end
    from graph=10 to 15; frame; end
    from graph=15 to 10; frame; end
    size=500;
    from graph=43 to 45; frame; end
    set_fps(70,10);
    kieto=1;
    timer[0]=0;
    delete_text(all_text);
    repeat
        frame;
    until(timer[0]>500)
    write(fuente,140,100,4,"FELICIDADES, PALETO");
    timer[0]=0;
    repeat
        frame;
    until(timer[0]>500)
    write(fuente,160,120,4,"HAS PETAO EL SISTEMA SOLAR");
    timer[0]=0;
    repeat
        frame;
    until(timer[0]>500)
    delete_text(all_text);
    write(fuente,0,0,0,"REPLAY");
    pon_marcianos();
    graph=26;
    size=0;
    timer[0]=0;
    while(timer[0]<400)
        size+=5;
        angle+=1000;
        frame;
        end
    masacre=1;
    from graph=10 to 20; frame; end  
    frame;
    masacre=0;
    pon_marcianos();
    graph=5;
    size=0;
    timer[0]=0;
    while(timer[0]<400)
        size+=5;
        angle+=1000;
        frame;
        end  
    masacre=1;
    frame;
    from graph=10 to 20; frame; end 
    masacre=0;
    pon_marcianos();
    graph=6;
    size=0;
    timer[0]=0;
    while(timer[0]<400)
        size+=5;
        angle+=1000;
        frame;
        end  
    masacre=1;
    frame;
    from graph=10 to 20; frame; end 
    masacre=0;
    pon_marcianos();
    graph=9;
    size=0;
    timer[0]=0;
    while(timer[0]<600)
        size+=5;
        angle+=1000;
        frame;
        end  
    masacre=1;
    frame;
    from graph=10 to 20; frame; end 
    from graph=10 to 20; frame; end 
    from graph=10 to 20; frame; end 
    from graph=10 to 20; frame; end 
    set_fps(60,0);

    creditos();
End

Process ani_giro2()
BEGIN
    z=6;
    x=160;
    y=100;
    size=0;
    graph=27;
    z=51;
    while(gigmuerto<2)
    	frame;
    end
    repeat
        angle-=1500;
        size+=1;
        frame;
    until(size==180);
    loop
        angle-=1500;
        frame;
    end
End

Process ani_giro3();
BEGIN
    z=7;
    x=236;
    y=160;
    graph=2;
    size=180;
    repeat
        angle+=1500;
        frame;
    until(key(_control) or key(_2) or key(_4))
END

PROCESS marciblanco(x,y);
BEGIN
    repeat
        marci=x;
        graph=33;
        if(lao==1) x+=16; frame; end
        if(lao==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=32;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end
END

PROCESS marcirojo(x,y);
BEGIN
    repeat
        marcir=x;
        graph=37;
        if(laor==1) x+=16; frame; end
        if(laor==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=36;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end

END

PROCESS marciverde(x,y);
BEGIN
    repeat
        marciv=x;
        graph=35;
        if(laov==1) x+=16; frame; end
        if(laov==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=34;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    if(randal>0 and randal<3) uzi_item(x,y); frame; end
    if(randal==0) vida_item(x,y); frame; end
    from graph=43 to 44; frame; end
END

PROCESS marciblanco2(x,y);
BEGIN
    repeat
        marci2=x;
        graph=33;
        if(lao2==1) x+=16; frame; end
        if(lao2==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=32;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end
END

PROCESS marcirojo2(x,y);
BEGIN
    repeat
        marcir2=x;
        graph=37;
        if(laor2==1) x+=16; frame; end
        if(laor2==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
    if(disparo3==0) disparrojo(x,y,angle); frame; end
        frame;
        graph=36;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end

END

PROCESS marciverde2(x,y);
BEGIN
    repeat
        marciv2=x;
        graph=35;
        if(laov2==1) x+=16; frame; end
        if(laov2==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=34;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    if(randal>0 and randal<3) uzi_item(x,y); frame; end
    if(randal==0) vida_item(x,y); frame; end
    marcianos-=1;
    from graph=43 to 44; frame; end
END
PROCESS marciblanco3(x,y);
BEGIN
    repeat
        marci3=x;
        graph=33;
        if(lao3==1) x+=16; frame; end
        if(lao3==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=32;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end
END

PROCESS marcirojo3(x,y);
BEGIN
    repeat
        marcir3=x;
        graph=37;
        if(laor3==1) x+=16; frame; end
        if(laor3==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
    if(disparo3==0) disparrojo(x,y,angle); frame; end
        graph=36;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end

END

PROCESS marciverde3(x,y);
BEGIN
    repeat
        marciv3=x;
        graph=35;
        if(laov3==1) x+=16; frame; end
        if(laov3==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=34;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    if(randal>0 and randal<3) uzi_item(x,y); frame; end
    if(randal==0) vida_item(x,y); frame; end
    marcianos-=1;
    from graph=43 to 44; frame; end
END
PROCESS marciblanco4(x,y);
BEGIN
    repeat
        marci4=x;
        graph=33;
        if(lao4==1) x+=16; frame; end
        if(lao4==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=32;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end
END

PROCESS marcirojo4(x,y);
BEGIN
    repeat
        marcir4=x;
        graph=37;
        if(laor4==1) x+=16; frame; end
        if(laor4==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=36;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end

END

PROCESS marciverde4(x,y);
BEGIN
    repeat
        marciv4=x;
        graph=35;
        if(laov4==1) x+=16; frame; end
        if(laov4==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=34;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    if(randal>0 and randal<3) uzi_item(x,y); frame; end
    if(randal==0) vida_item(x,y); frame; end
    marcianos-=1;
    from graph=43 to 44; frame; end
END
PROCESS marciblanco5(x,y);
BEGIN
    repeat
        marci5=x;
        graph=33;
        if(lao5==1) x+=16; frame; end
        if(lao5==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=32;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end
END

PROCESS marcirojo5(x,y);
BEGIN
    repeat
        marcir5=x;
        graph=37;
        if(laor5==1) x+=16; frame; end
        if(laor5==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
    if(disparo3==0) disparrojo(x,y,angle); frame; end
        frame;
        graph=36;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end

END

PROCESS marciverde5(x,y);
BEGIN
    repeat
        marciv5=x;
        graph=35;
        if(laov5==1) x+=16; frame; end
        if(laov5==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=34;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    if(randal>0 and randal<3) uzi_item(x,y); frame; end
    if(randal==0) vida_item(x,y); frame; end
    marcianos-=1;
    from graph=43 to 44; frame; end
END
PROCESS marciblanco6(x,y);
BEGIN
    repeat
        marci6=x;
        graph=33;
        if(lao6==1) x+=16; frame; end
        if(lao6==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=32;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end
END

PROCESS marcirojo6(x,y);
BEGIN
    repeat
        marcir6=x;
        graph=37;
        if(laor6==1) x+=16; frame; end
        if(laor6==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
    if(disparo3==0) disparrojo(x,y,angle); frame; end
        graph=36;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end

END

PROCESS marciverde6(x,y);
BEGIN
    repeat
        marciv6=x;
        graph=35;
        if(laov6==1) x+=16; frame; end
        if(laov6==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=34;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    if(randal>0 and randal<3) uzi_item(x,y); frame; end
    if(randal==0) vida_item(x,y); frame; end
    marcianos-=1;
    from graph=43 to 44; frame; end
END

PROCESS marciblanco7(x,y);
BEGIN
    repeat
        marci7=x;
        graph=33;
        if(lao7==1) x+=16; frame; end
        if(lao7==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=32;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end
END

PROCESS marcirojo7(x,y);
BEGIN
    repeat
        marcir7=x;
        graph=37;
        if(laor7==1) x+=16; frame; end
        if(laor7==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
    if(disparo3==0) disparrojo(x,y,angle); frame; end
        graph=36;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end

END

PROCESS marciverde7(x,y);
BEGIN
    repeat
        marciv7=x;
        graph=35;
        if(laov7==1) x+=16; frame; end
        if(laov7==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=34;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    if(randal>0 and randal<3) uzi_item(x,y); frame; end
    if(randal==0) vida_item(x,y); frame; end
    marcianos-=1;
    from graph=43 to 44; frame; end
END
PROCESS marciblanco8(x,y);
BEGIN
    repeat
        marci8=x;
        graph=33;
        if(lao8==1) x+=16; frame; end
        if(lao8==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=32;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end
END

PROCESS marcirojo8(x,y);
BEGIN
    repeat
        marcir8=x;
        graph=37;
        if(laor8==1) x+=16; frame; end
        if(laor8==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
    if(disparo3==0) disparrojo(x,y,angle); frame; end
        graph=36;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    marcianos-=1;
    from graph=43 to 44; frame; end

END

PROCESS marciverde8(x,y);
BEGIN
    repeat
        marciv8=x;
        graph=35;
        if(laov8==1) x+=16; frame; end
        if(laov8==0) x-=16; frame; end
        if(x==288) y+=16; frame; end
        frame;
        graph=34;
        frame;
    until(collision (type dispar1) or collision(type dispar2) or masacre==1)
    if(randal>0 and randal<3) uzi_item(x,y); frame; end
    if(randal==0) vida_item(x,y); frame; end
    marcianos-=1;
    from graph=43 to 44; frame; end
END

PROCESS dispar1(x,y);
BEGIN
    disparo1-=1;
    graph=39;
    play_wav(pum1,0);
    repeat
        y-=6;
        frame;
    until(y<0)
    disparo1+=1;
END

PROCESS dispar2(x,y);
BEGIN
    disparo2-=1;
    graph=41;
    play_wav(pum2,0);
    repeat
        y-=6;
        frame;
    until(y<0)
    disparo2+=1;
END

PROCESS disparrojo(x,y,angle);
BEGIN
    disparo3=1;
    graph=42;
    repeat
        if(jefe==0) y+=7; frame; end
        if(jefe==1) advance(6); frame; end
        frame;
        until(y>250)
    disparo3=0;
END

PROCESS marcigante(x,y);
BEGIN
    size=200;
    if(jefe==0) x=rand(64,260); frame; end
    repeat
        y+=1;
        graph=32;
        frame;
        graph=33;
        frame;
        graph=34;
        frame;
        graph=35;
        frame;
        graph=36;
        frame;
        graph=37;
        frame;
        if(collision (type dispar1) or collision(type dispar2)) gig-=1; frame; end
    until(gig==0)
    from graph=43 to 44; frame; end
    gigmuerto+=1;
    disparo1=1;
    disparo2=1;
    if(gigmuerto<9) pon_marcianos(); end
    marcianos=18;
END

PROCESS pon_marcianos();
BEGIN
     while(kieto==1)
        frame;
        end
     marciblanco(32,32);
     marciverde(64,32);
     marcirojo(96,32);
     marciblanco2(128,32);
     marciverde2(160,32);
     marcirojo2(192,32);

     marciblanco3(32,64);
     marciverde3(64,64);
     marcirojo4(96,64);
     marciblanco4(128,64);
     marciverde4(160,64);
     marcirojo5(192,64);

     marciblanco5(32,96);
     marciverde5(64,96);
     marcirojo6(96,96);
     marciblanco6(128,96);
     marciverde6(160,96);
     marcirojo7(192,96);
     Repeat
        if(marci>287) lao=0; frame; end
        if(marci<32) lao=1; frame; end
        if(marcir>288) laor=0; frame; end
        if(marcir<32) laor=1; frame; end
        if(marciv>288) laov=0; frame; end
        if(marciv<32) laov=1; frame; end
        if(marci2>288) lao2=0; frame; end
        if(marci2<32) lao2=1; frame; end
        if(marcir2>288) laor2=0; frame; end
        if(marcir2<32) laor2=1; frame; end
        if(marciv2>288) laov2=0; frame; end
        if(marciv2<32) laov2=1; frame; end
        if(marci3>288) lao3=0; frame; end
        if(marci3<32) lao3=1; frame; end
        if(marcir3>288) laor3=0; frame; end
        if(marcir3<32) laor3=1; frame; end
        if(marciv3>288) laov3=0; frame; end
        if(marciv3<32) laov3=1; frame; end
        if(marci4>288) lao4=0; frame; end
        if(marci4<32) lao4=1; frame; end
        if(marcir4>288) laor4=0; frame; end
        if(marcir4<32) laor4=1; frame; end
        if(marciv4>288) laov4=0; frame; end
        if(marciv4<32) laov4=1; frame; end
        if(marci5>288) lao5=0; frame; end
        if(marci5<32) lao5=1; frame; end
        if(marcir5>288) laor5=0; frame; end
        if(marcir5<32) laor5=1; frame; end
        if(marciv5>288) laov5=0; frame; end
        if(marciv5<32) laov5=1; frame; end
        if(marci6>288) lao6=0; frame; end
        if(marci6<32) lao6=1; frame; end
        if(marcir6>288) laor6=0; frame; end
        if(marcir6<32) laor6=1; frame; end
        if(marciv6>288) laov6=0; frame; end
        if(marciv6<32) laov6=1; frame; end
        if(marci7>288) lao7=0; frame; end
        if(marci7<32) lao7=1; frame; end
        if(marcir7>288) laor7=0; frame; end
        if(marcir7<32) laor7=1; frame; end
        if(marciv7>288) laov7=0; frame; end
        if(marciv7<32) laov7=1; frame; end
        frame;
     Until(marcianos==0);
     if(gigmuerto==8) jefe_(); frame; end
     if(jefe==0) gig=15; frame; end
     if(jefe==0) marcigante(60,60); frame; end
     frame;
END

PROCESS creditos();
BEGIN
    stop_song();
    let_me_alone();
    delete_text(all_text);
    ani_giro3();
    write(fuente,236,130,4,"KEADO POR");
    timer[2]=0;
    z=3;
    x=236;
    y=160;
    graph=25;
    timer[1]=0;
    repeat
        frame;
    until(timer[1]>500)
    let_me_alone();
    graph=0;
    pon_gordo();
    delete_text(all_text);
    write(fuente,160,100,4,"GAME OVER");
    repeat
        frame;
    until(timer[2]>1000)
    exit("Gracias por jugar a este juego!",0);
END

PROCESS pon_gordo();
BEGIN
    z=512;
    x=160;
    y=100;
    size=625;
    risas_final=load_wav("risa1.wav");
    play_wav(risas_final,-1);
    loop
        from graph=32 to 37;
            frame;
            end
        frame;
    end
END

PROCESS uzi_item(x,y);
BEGIN
    graph=3;
    repeat
        y+=3;
        if(collision(type mm1)) disparo1+=1; break; end
        if(collision(type mm2)) disparo2+=1; break; end
        frame;
    until(y==340)
END

PROCESS vida_item(x,y)
BEGIN
    graph=4;
    repeat
        y+=3;
        if(collision(type mm1)) vidas1+=1; break; end
        if(collision(type mm2)) vidas2+=1; break; end
        frame;
    until(y==340)
END

PROCESS pon_vida();
BEGIN
    if(matamatas==1) write_int(fuente,320,0,2,offset vidas1); frame; nave1(); end
    if(matamatas==2) write_int(fuente,320,0,2,offset vidas1); frame; nave1(); write_int(fuente,320,20,2,offset vidas2); frame; nave2(); end
    text_z=2;
END

PROCESS nave1();
BEGIN
    graph=38;
    size=50;
    x=288;
    y=18;
    repeat
        frame;
    until(kieto==1)
END

PROCESS nave2();
BEGIN
    graph=40;
    size=50;
    x=288;
    y=40;
    repeat
        frame;
    until(kieto==1)
END

PROCESS jefe_();
BEGIN
    x=160;
    y=32;
    gig=50;
    jefe=1;
    graph=28;
    size=50;
    loa=1;
    repeat
    size+=1;
        amparo=rand(0,100);
        angle+=10000;
        if(amparo<10) disparo3=0; frame; end
        if(y<100) y+=1; frame; end
        if(x>288) loa=0; size+=1; frame; end
        if(x<32) loa=1; size+=1; frame; end
        if(y==100 and loa==0) x-=3; frame; end
        if(y==100 and loa==1) x+=3; frame; end
        disparrojo(x,y,angle);
        if(collision(type dispar1) or collision(type dispar2)) gig-=1; frame; end
        frame;
    until(gig==0)
    gigmuerto+=1;
END

PROCESS musica();
BEGIN
    musica1=load_song("music5.it");
    play_song(musica1,-1);
    frame;
END

PROCESS pon_cabezon();
BEGIN
    size=0;
    graph=29;
    x=260;
    y=60;
    timer[7]=0;
    while(timer[7]<400);
        angle+=5000;
        size+=1;
        frame;
        end
    while(timer[7]<500);
        angle=0;
        frame;
        end
end

PROCESS velocidad();
BEGIN
    loop
        if(key(_control)) set_fps(15,0); frame; end
        if(key(_2)) set_fps(20,0); frame; end
        if(key(_3)) set_fps(30,0); frame; end
        frame;
    end
END

PROCESS galaxi();
PRIVATE
    colocax;
BEGIN
    loop
        colocax=rand(0,320);
        if(estelas<600) estela(colocax); end
        frame;
    end
END

PROCESS estela(x);
PRIVATE
    yadv;
    xadv;
    clor;
    epix;
    epiy;
BEGIN
    estelas++;
    y=200;
    yadv=rand(0,-10);
    xadv=rand(-1,1);
    repeat
        epix=x;
        epiy=y;
        clor=rand(1,3);
        put_pixel(epix,epiy,72);
        frame;
        put_pixel(epix,epiy,0);
        y+=(yadv+velestela);
        x+=xadv;
        frame;
    until(y==0)
    estelas--;
END
