#include <allegro.h> // Crimson by Anders Andersson
int i,j,*b,a,e,k=0,h[100],t,d;float x[100],y[100],v[100],w[100],X,Y;T(){++t;}
END_OF_FUNCTION(T)LOCK_VARIABLE(t);LOCK_FUNCTION(T);main(){srand(time(0));x[0]=
400;y[0]=300;h[0]=99;for(i=1;i<100;++i)h[i]=0;allegro_init();install_keyboard();
install_timer();install_mouse();install_int(T,50);set_gfx_mode(2,800,600,0,0);b=
create_bitmap(800,600);while(!key[59]){rest(1);if(h[0]>0){if(!--t)continue;if(
key[83])x[0]++;if(key[82])x[0]--;if(key[85])y[0]++;if(key[84])y[0]--;a=0;e=0;for
(i=1;i<100;++i){if(h[i]<=0){if(i<20&&!e++){x[i]=rand()%800;y[i]=10;h[i]=10;}else
 if(i>50&&mouse_b&&!a++){x[i]=x[0];y[i]=y[0];v[i]=(mouse_x-x[0])/100;w[i]=(
mouse_y-y[0])/100;h[i]=1;}}else{if(i<50){float a=atan2(y[0]-y[i],x[0]-x[i]);x[i]
+=cos(a);y[i]+=sin(a);circle(b, x[i],y[i],5,makecol(255, 255, 255));for(j=50; j<
100;++j){X=x[i]-x[j];Y=y[i]-y[j];if(X*X+Y*Y<99 && h[j]>0){h[j]=0;if(--h[i]<=0)
++k;}}X=x[i]-x[0];Y=y[i]-y[0];if(X*X+Y*Y<99)--h[0];}else{if(x[i]<0||x[i]>800||
y[i]<0||y[i]>600)h[i]=0;x[i]+=v[i];y[i]+=w[i];circle(b,x[i],y[i],2,makecol(0,0,
255));}}}circle(b, x[0],y[0],5,makecol(0, 255, 0));circle(b, mouse_x,mouse_y,5,
makecol(255,255,0));textprintf(b,font,8,580,15,"Kills: %d Health: %d",k,h[0]);}
else{textprintf(b,font,300,300,15,"Game over: %d kills",k);if(key[KEY_ENTER]){
x[0]=400;y[0]=300;h[0]=99;for(i=1;i<100;++i)h[i]=0;}}blit(b,screen,0,0,0,0,800,
600);clear(b);}}END_OF_MAIN()
