#include <allegro.h>
#include <fstream>
#include<cmath>
using namespace std;
BITMAP* buffer;
BITMAP* background;
BITMAP* adrip;
BITMAP* sniper;
BITMAP* sniper_rood;
BITMAP* rode_kruis;
BITMAP* knal;
BITMAP* klok;
SAMPLE *rifle = load_wav("rifle.wav");
SAMPLE *reload = load_wav("reload.wav");
SAMPLE *shotgun = load_wav("shotgun.wav");
MIDI *james_bond = load_midi("james_bond.mid");
MIDI *victory = load_midi("victory.mid");
MIDI *carmina = load_midi("carmina.mid");
void init();
struct windows{int x; int y;int bestaan_tijd;bool dood;int togo;bool rodekruis;bool knal;}window[32];
int cursor_x = 20;
int cursor_y = 20;
void getMouseInfo();
void mouveMouse();
void print_adrip();
void init_windows();
void rand_adrip();
void check_raak();
void set_health();
void draw_health();
void draw_level();
void ramen_vol();
int timer=30;
int leven=305;
int health_todo=0;
int rodekruis_teller=0;
int level = 100;
int schietteller=0;
int snelschiet=190;
int draaien = 0;
long double hoek;
/**************************************************************************************************************************
**************************************************MASSIV MAIN**************************************************************
**************************************************************************************************************************/
int main()
{
init();
init_windows();
textout_ex(screen,font,"LOADING...",580,460,makecol(255,255,255),makecol(255,0,0));
textout_ex(screen,font,"THIS GAME WAS MADE BY TCHEMBADO",500,512,makecol(255,255,255),makecol(255,0,0));
rest(3000);
//int tel = 29;
while(!key[KEY_ESC])
{
if(key[KEY_L])level--;
set_health();
draw_sprite(buffer,background,0,0);
draw_health();
print_adrip();
getMouseInfo();
mouveMouse();
if (timer==0){rand_adrip();timer=50+level;}
timer--;
if(!mouse_b & 1){schietteller=200;}
if (mouse_b & 1&&schietteller>=snelschiet){
play_sample(rifle, 255, 125, 2000, 0);
schietteller=0;
check_raak();
}
schietteller++;
if(key[KEY_R])
{
play_sample(reload,255,125,1000,0);
rest(200);
}
draw_level();
if(key[KEY_M]&&key[KEY_S]){snelschiet=10;}
ramen_vol();
/* if (mouse_b & 1){
ofstream myfile;
myfile.open ("x_y.txt", ios::out | ios::app);
myfile<<"window["<<tel<<"].x="<<cursor_x<<";"<<endl;
myfile<<"window["<<tel<<"].y="<<cursor_y<<";"<<endl<<endl;
myfile.close();
rest(300);
n++;}*/
textprintf_ex(buffer,font,1000,40,makecol(250,0,0),-1,"MADE BY TCHEMBADO");
textprintf_ex(buffer,font,1000,55,makecol(250,0,0),-1,"x = %d",cursor_x);
textprintf_ex(buffer,font,1000,70,makecol(250,0,0),-1,"y = %d",cursor_y);
textprintf_ex(buffer,font,1000,85,makecol(250,0,0),-1,"LEVEN = %d",(leven*100)/305);
textprintf_ex(buffer,font,1000,115,makecol(250,0,0),-1,"LEVEL = %d PROCENT",100-level);
draw_sprite(screen,buffer,0,0);
rest(1);
if (leven==0)
{play_midi(carmina,0);
while(!key[KEY_ENTER])
{
textout_ex(screen,font,"YOU SUCK",580,460,makecol(255,255,255),makecol(255,0,0));
textout_ex(screen,font,"THIS GAME WAS MADE BY TCHEMBADO",500,512,makecol(255,255,255),makecol(255,0,0));
textout_ex(screen,font,"(Press enter to continue)",510,800,makecol(255,255,255),makecol(255,0,0));
}
return 0;
}
if(level==0)
{ play_midi(victory,0);
while(!key[KEY_ENTER])
{
textout_ex(screen,font,"YOU OWNED",580,460,makecol(255,255,255),makecol(255,0,0));
textout_ex(screen,font,"THIS GAME WAS MADE BY TCHEMBADO",500,512,makecol(255,255,255),makecol(255,0,0));
textout_ex(screen,font,"(Press enter to continue)",510,800,makecol(255,255,255),makecol(255,0,0));
}
return 0;
}
}
}
void init()
{
allegro_init();
install_mouse();
install_keyboard();
set_color_depth(16);
set_gfx_mode( GFX_AUTODETECT, 1280,1024, 0, 0);
if (install_sound(DIGI_AUTODETECT,MIDI_AUTODETECT,NULL) != 0)
{
allegro_message("ERROR: Couldn't initialize sound hardware!");
}
set_volume(100, 100);
buffer=create_bitmap(1280,1024);
background=load_bitmap("background.bmp",NULL);
adrip=load_bitmap("foto.bmp",NULL);
sniper=load_bitmap("sniper.bmp",NULL);
sniper_rood=load_bitmap("sniper_rood.bmp",NULL);
rode_kruis=load_bitmap("rode_kruis.bmp",NULL);
knal=load_bitmap("knal.bmp",NULL);
klok=load_bitmap("klok.bmp",NULL);
play_looped_midi(james_bond,0,250);
for(int n = 0;n<=31;n++)
{
window[n].bestaan_tijd=0;
window[n].dood=true;
}
}
void getMouseInfo(){
cursor_x = mouse_x;
cursor_y = mouse_y;
}
void mouveMouse()
{
circle(buffer,cursor_x,cursor_y,20,makecol(250,0,0));
circlefill(buffer,cursor_x,cursor_y,1,makecol(250,0,0));
line(buffer,cursor_x+10,cursor_y,cursor_x+30,cursor_y,makecol(250,0,0));
line(buffer,cursor_x-10,cursor_y,cursor_x-30,cursor_y,makecol(250,0,0));
line(buffer,cursor_x,cursor_y+10,cursor_x,cursor_y+30,makecol(250,0,0));
line(buffer,cursor_x,cursor_y-10,cursor_x,cursor_y-30,makecol(250,0,0));
}
void print_adrip()
{
for(int n = 0;n<=31;n++)
{
if(window[n].bestaan_tijd>0&&window[n].dood==false){
if(window[n].togo>0)
{
if(window[n].rodekruis)blit(rode_kruis,buffer,0,0,window[n].x,window[n].y+window[n].togo,100,72-window[n].togo);
else blit(adrip,buffer,0,0,window[n].x,window[n].y+window[n].togo,100,72-window[n].togo);
window[n].togo--;
}
else {
if (window[n].rodekruis)draw_sprite(buffer,rode_kruis,window[n].x,window[n].y);
else if(window[n].knal)draw_sprite(buffer,knal,window[n].x,window[n].y);
else draw_sprite(buffer,adrip,window[n].x,window[n].y);
}}
else if(window[n].bestaan_tijd>0&&window[n].dood==true)
if(window[n].rodekruis)rectfill(buffer,window[n].x,window[n].y,window[n].x+60,window[n].y+72,makecol(255,255,255));
else rectfill(buffer,window[n].x,window[n].y,window[n].x+60,window[n].y+72,makecol(250,0,0));
if(window[n].bestaan_tijd==0){window[n].dood=true;}
}
}
void rand_adrip(){
bool bestaan=true;
srand(time(0));
int extra = 0;
int getal;
while(bestaan)
{
getal=(13*rand()+7+extra)%31;
if(window[getal].bestaan_tijd==0)
{
window[getal].bestaan_tijd=8;
window[getal].togo=72;
window[getal].dood=false;
bestaan = false;
}
extra++;
}
rodekruis_teller++;
if(rodekruis_teller==15){window[getal].rodekruis=true;rodekruis_teller=0;}
else{window[getal].rodekruis=false;
for(int n = 0;n<=31;n++)
{window[n].knal=false;}
}
for(int n = 0;n<=31;n++)
{
if(window[n].bestaan_tijd>0){
window[n].bestaan_tijd--;}
}
}
void check_raak()
{
for(int n = 0;n<=31;n++)
{
if(!window[n].dood){
if(cursor_x>window[n].x+10&&cursor_x<window[n].x+50&&cursor_y>window[n].y+10&&cursor_y<window[n].y+62&&window[n].bestaan_tijd>0)
{
if(window[n].rodekruis){health_todo+=50;}
else level--;
window[n].dood=true;
window[n].bestaan_tijd=2;
}
}
}
}
void draw_health()
{
if(health_todo>0){
if(leven<305)leven++;
health_todo--;
}
else if(health_todo<0){
if(leven>0)leven--;
health_todo++;
}
draw_sprite(buffer,sniper_rood,63,45);
blit(sniper,buffer,305-leven+30,0,305-leven+63+30,45,364,138);
}
void set_health()
{
for(int n;n<=31;n++)
{
if(window[n].bestaan_tijd==1&&window[n].dood==false&&!window[n].rodekruis)
{
health_todo-=10;
window[n].bestaan_tijd=5;
window[n].knal=true;
play_sample(shotgun, 255, (window[n].x*255)/1280, 2000, 0);
rectfill(screen,0,0,2000,2000,makecol(255,0,0));rest(2);
}
}
}
void ramen_vol()
{
int teller = 0;
for(int n = 0;n<=31;n++)
{
if(window[n].dood==false)teller++;
}
if(teller==30){leven=0;
for(int n = 0;n<=31;n++)
{
window[n].bestaan_tijd=0;
window[n].dood=true;
}
}
textprintf_ex(buffer,font,1000,100,makecol(250,0,0),-1,"aantal adrips = %d",teller);
}
void draw_level()
{
hoek = (100-level)*6.28/100-1.57;
//textprintf_ex(buffer,font,1000,215,makecol(250,0,0),-1,"hoek = %d PROCENT",hoek);
draw_sprite(buffer,klok,800,50);
triangle(buffer,875+5*cos(hoek+1.57),125+5*sin(hoek+1.57),875-5*cos(hoek+1.57),125-5*sin(hoek+1.57),875+55*cos(hoek),125+55*sin(hoek),makecol(255,0,0));
circlefill(buffer,875,125,5,makecol(0,0,0));
}
void init_windows()
{
window[0].x=438;
window[0].y=306;
window[1].x=578;
window[1].y=313;
window[2].x=509;
window[2].y=472;
window[3].x=209;
window[3].y=589;
window[4].x=307;
window[4].y=590;
window[5].x=476;
window[5].y=572;
window[6].x=536;
window[6].y=572;
window[7].x=703;
window[7].y=593;
window[8].x=799;
window[8].y=595;
window[9].x=107;
window[9].y=704;
window[10].x=204;
window[10].y=704;
window[11].x=306;
window[11].y=704;
window[12].x=425;
window[12].y=707;
window[13].x=509;
window[13].y=709;
window[14].x=590;
window[14].y=709;
window[15].x=702;
window[15].y=707;
window[16].x=802;
window[16].y=705;
window[17].x=894;
window[17].y=705;
window[18].x=990;
window[18].y=738;
window[19].x=1095;
window[19].y=737;
window[20].x=1159;
window[20].y=735;
window[21].x=108;
window[21].y=856;
window[22].x=208;
window[22].y=856;
window[23].x=307;
window[23].y=855;
window[24].x=476;
window[24].y=877;
window[25].x=543;
window[25].y=877;
window[26].x=706;
window[26].y=856;
window[27].x=807;
window[27].y=857;
window[28].x=902;
window[28].y=854;
window[29].x=1039;
window[29].y=855;
window[30].x=1100;
window[30].y=854;
window[31].x=1161;
window[31].y=852;
}
END_OF_MAIN();