/********************* 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].xprota.x) robots[i].x-=8; end if(robots[i].yprota.y) robots[i].y-=8; end end end END