edivc/ediv/bin/ROBOTS.PRG
2003-05-30 03:17:43 +00:00

331 lines
7.7 KiB
Plaintext

/*********************
Los Robots Asesinos
*********************
(c) Er_Makina, 2000
www.sferasoft.org
********************
Este programa es SOFTWARE LIBRE y puedes hacer con él
lo de te salga de las narices. Puedes modificarlo y
redistribuirlo libremente sin necesidad de notificar-
me nada.
********************
NOTAS:
- El programa funcionará bajo DIV 1 si se quita la 1ª
línea del programa (compiler_options)
- Para ejecutar el EXE, es necesario el archivo
DIV32RUN.DLL que podrás encontrar en la web oficial
de DIV (www.divgames.com)
********************/
COMPILER_OPTIONS _extended_conditions;
Program Juego_robots;
CONST
max_robots=25;
GLOBAL
prota;
num_robots=5;
robots[max_robots];
muerto[max_robots];
muertos;
cogido;
ya;
LOCAL
i;
PRIVATE
protax;
protay;
mueve;
harf;
j;
espe;
BEGIN
set_mode(320,200,8,_fullscreen);
load_fpg("robots.fpg");
load_fnt("system.fnt");
write(1,0,0,0,"Pulsa F1 para obtener ayuda");
write(1,160,100,4,"¨PREPARADO?");
espe=1;
mouse.flags=4;
loop
// fade_on();
// prota=protag(rand(0,39)*8,rand(0,24)*8);
protag(rand(0,39)*8,rand(0,24)*8);
for(i=1;i<=num_robots;i++)
loop
x=rand(0,39);
y=rand(0,24);
graph=2;
if(fget_dist(x,y,prota.x/8,prota.y/8)>2)
x*=8;
y*=8;
if(i==1)
// robots[i]=robot(x,y);
robot(x,y,i);
muerto[i]=0;
break;
else
harf=0;
for(j=1;j<=i-1;j++)
if(robots[j].x<>x && robots[j].y<>y)
harf++;
end
end
if(harf==i-1)
// robots[i]=robot(x,y);
robot(x,y,i);
muerto[i]=0;
break;
end
end
end
end
end
debug_procesos();
graph=0;
protax=prota.x;
protay=prota.y;
if(espe)
timer[2]=0;
while(/*fading ||*/ timer[2]<200)
frame;
end
delete_text(all_text);
espe=0;
end
loop
frame;
if(cogido)
repeat
frame;
until(ya)
break;
end
if((key(_up) || key(_c_up) || key(_c_home) || key(_c_pgup)) && prota.y>0)
while(key(_up) || key(_c_up))
frame;
end
protay-=8;
mueve=1;
end
if((key(_down) || key(_c_down) || key(_c_end) || key(_c_pgdn)) && prota.y<191)
while(key(_down) || key(_c_down))
frame;
end
protay+=8;
mueve=1;
end
if((key(_left) || key(_c_left) || key(_c_home) || key(_c_end)) && prota.x>0)
while(key(_left) || key(_c_left) || key(_c_home) || key(_c_end))
frame;
end
protax-=8;
mueve=1;
end
if((key(_right) || key(_c_right) || key(_c_pgup) || key(_c_pgdn)) && prota.x<311)
while(key(_right) || key(_c_right) || key(_c_pgup) || key(_c_pgdn))
frame;
end
protax+=8;
mueve=1;
end
if(key(_c_center))
while(key(_c_center))
frame;
end
mueve=1;
end
if(key(_t))
while(key(_t))
frame;
end
loop
x=rand(0,39);
y=rand(0,24);
j=0;
for(i=1;i<=num_robots;i++)
if(fget_dist(x,y,robots[i].x/8,robots[i].y/8)>2)
j++;
end
end
if(j==num_robots)
break;
end
end
protax=x*8;
protay=y*8;
mueve=1;
end
if(key(_u))
while(key(_u))
frame;
end
protax=rand(0,39)*8;
protay=rand(0,24)*8;
mueve=1;
end
if(key(_f1))
graph=14;
x=160;
y=100;
z=-20;
while(key(_f1))
frame;
end
repeat
frame;
until(key(_space) || key(_enter))
graph=0;
end
if(mueve==1)
prota.x=protax;
prota.y=protay;
mueve=0;
mueve_robots();
end
end
// debug_procesos();
signal(prota,s_kill);
// debug_procesos();
signal(type robot,s_kill);
// debug_procesos();
muertos=0;
cogido=0;
ya=0;
end
END
Process Protag(x,y)
PRIVATE
imagen=0;
imagenes[12]=1,9,10,11,12,13,12,13,12,11,10,9,1;
saludando;
esp_frame;
coge_robot;
BEGIN
// debug_procesos();
prota=id;
graph=imagenes[imagen];
timer[1]=0;
loop
frame;
if(coge_robot=collision(type robot))
cogido=1;
if(coge_robot.graph==3)
write(1,160,100,4,"¡¡ PERO QUÉ HACES !!");
else
write(1,160,100,4,"¡¡ TE HAN COGIDO !!");
end
write(1,160,199,7,"Pulsa una tecla");
repeat
frame;
until(key(_space) || key(_enter))
/*fade_off();
while(fading)
frame;
end*/
delete_text(all_text);
ya=1;
frame;
end
if(saludando==0 && timer[1]=>500)
saludando=1;
end
if(saludando==1)
if(imagen<12)
esp_frame++;
if(esp_frame==2)
esp_frame=0;
imagen++;
graph=imagenes[imagen];
end
else
saludando=0;
imagen=0;
timer[1]=0;
end
end
if(muertos==num_robots)
cogido=1;
write(1,160,100,4,"¡¡ MUY BIEN !!");
write(1,160,199,7,"Pulsa una tecla");
num_robots++;
repeat
frame;
until(key(_space) || key(_enter))
/*fade_off();
while(fading)
frame;
end*/
delete_text(all_text);
ya=1;
if(num_robots>max_robots)
exit("¡Te has pasado el juego!",0);
end
frame;
end
end
END
Process Robot(x,y,num)
PRIVATE
imagen=0;
imagenes[3]=2,6,7,8;
ya_mue;
esp_frame;
BEGIN
debug_procesos();
robots[num]=id;
graph=imagenes[imagen];
loop
frame;
if(collision(type robot))
graph=3;
if(!ya_mue)
muertos++;
ya_mue=1;
end
end
if(graph<>3)
esp_frame++;
if(esp_frame==2)
esp_frame=0;
imagen=(imagen+1)mod 3;
graph=imagenes[imagen];
end
end
end
END
Process mueve_robots()
BEGIN
for(i=1;i<=num_robots;i++)
if(robots[i].graph==3)
muerto[i]=1;
end
if(!muerto[i])
if(robots[i].x<prota.x)
robots[i].x+=8;
end
if(robots[i].x>prota.x)
robots[i].x-=8;
end
if(robots[i].y<prota.y)
robots[i].y+=8;
end
if(robots[i].y>prota.y)
robots[i].y-=8;
end
end
end
END