Heart Breaking Kid


Source Code:

#include <stdio.h>
#include <ctype.h>
#include <alloc.h>
#include <graphics.h>
#include <dos.h>
#include <stdlib.h>
#include <conio.h>

#define n 25
void start(void);
void end(void);
void rhits(void);
void yhits(void);
void phits(void);
char *msg;
void *ball, *ball1, *ball2, *gun, *bomb[n];

void *rhrt[n], *yhrt[n], *phrt[n];
int rflag[n], yflag[n], pflag[n];
int rx[n], ry[n], yx[n], yy[n], px[n], py[n];
int j, life = 3;
int rin=0, yin=0, pin=0;
unsigned int size,size1,size2,size3,size4;
int count = 0, r = 10, bct=0;
int nohits = 0, i;
int ats = 0;
int xend = 400, yend = 450;
char che = 3, ch;
int flag = 1, x = 5, gx = 4, hitflag[n];
int speed = 1, hity[n], hitx[n];
int x1 = 200, x2 = 377;
int ti=500;
int flag1 = 1, flag2 = 1;
int rhit = 0, yhit = 0, phit = 0;
struct  time t;

void main(void)
{
    int gd = DETECT, gm;
    initgraph(&gd, &gm, "c:\tc\bgi");

    sprintf(msg,"%c",che);

    setcolor(RED);
    settextstyle(0,0,30);
    outtextxy(getmaxx()/2-130,getmaxy()/2-100,msg);

    setcolor(WHITE);
    settextstyle(0,0,0);
    outtextxy(getmaxx()/2-100,getmaxy()/2-50,"Heart Break Kid Game");
   
    getch();

    cleardevice();

    start();
    for(i=0;i<n;i++)
    {
        hitflag[i] = 0;
        rflag[i] = 0;
        yflag[i] = 0;
        pflag[i] = 0;
    }

    setcolor(RED);
    settextstyle(0,0,2);
    outtextxy(8,10,msg);

    setcolor(12);
    setlinestyle(0,0,THICK_WIDTH);

    rectangle(1,1,xend,getmaxy());
    rectangle(1,1,getmaxx()-1,getmaxy()-1);

    setfillstyle(10,12);
    bar(xend+1,2,getmaxx()-2,100);
    rectangle(xend,100,getmaxx()-1,200);

    line(xend,285,getmaxx(),285);
    line(1,yend,getmaxx(),yend);

    setcolor(RED);
    settextstyle(0,0,2);
    outtextxy(xend+20,200+10,msg);

    setcolor(YELLOW);
    settextstyle(0,0,2);
    outtextxy(xend+110,200+10,msg);

    setcolor(12);
    settextstyle(0,0,2);
    outtextxy(xend+195,200+10,msg);

    setcolor(RED);
    setlinestyle(0,0,NORM_WIDTH);
    circle(r+5,r+5,r);

    setcolor(YELLOW);
    settextstyle(0,0,2);
    outtextxy(203,155,msg);

    setcolor(YELLOW);
    setlinestyle(0,0,NORM_WIDTH);
    circle(r+200,r+150,r);

    setcolor(12);
    settextstyle(0,0,2);
    outtextxy(xend-20,255,msg);

    setcolor(12);
    setlinestyle(0,0,NORM_WIDTH);
    circle(xend-r-3,r+250,r);


    setcolor(11);
    setlinestyle(0,0,THICK_WIDTH);
    line(5,yend-5,20,yend-5);
    line(5,yend-5,13,yend-14);
    line(20,yend-5,13,yend-14);

    size = imagesize(5,5,25,25);
    ball = malloc(size);
    getimage(5,5,25,25,ball);

    size = imagesize(200,150,220,170);
    ball1 = malloc(size);
    getimage(200,150,220,170,ball1);

    size = imagesize(377,250,397,270);
    ball2 = malloc(size);
    getimage(377,250,397,270,ball2);

    size = imagesize(4,yend-4,21,yend-14);
    gun = malloc(size);
    getimage(4,yend-4,21,yend-14,gun);

    setfillstyle(1,12);
    bar(4,yend+3,xend-3,getmaxy()-4);
    setcolor(11);
    settextstyle(0,0,0);
    setcolor(12);
    settextstyle(4,0,2);
    outtextxy(xend+25,20,"HEART BREAK KID");
    outtextxy(xend+50,55,"GAME ZONE");


    settextstyle(0,0,1);
    setcolor(12);

    outtextxy(xend+10,315,"Right Arrow Move Right Side");
    outtextxy(xend+10,345,"Left Arrow Move Left Side");
    outtextxy(xend+10,375,"Up Arrow To Fire The Arrow");
    outtextxy(xend+10,405,"Exit");

    randomize();

    while(1)
    {
        if(life==0)
        {
    delay(1000);
    end();
        }
        gotoxy(52,16);
        printf("%3d",rhit);
        gotoxy(63,16);
        printf("%3d",yhit);
        gotoxy(74,16);
        printf("%3d",phit);
        if(life<0)
        life = 0;
        gotoxy(55,12);
        printf("Speed : %d Lifes : %2d",speed,life);
        gotoxy(55,10);
        printf("Total Points    : %4d",count);
        gotoxy(55,8);
        printf("No Of Attempts  : %4d",ats);
        if(random(200-speed*10)==150-speed*5)
        rhits();
        if(random(200-speed*10)==77-speed*5)
        phits();
        if(random(200-speed*10)==111-speed*5)
        yhits();
        if(kbhit())
        {
    ch = getch();
    if(ch==0)
    {
        ch = getch();
        putimage(gx,yend-14,gun,XOR_PUT);

        if(ch==75)
        {
    if(gx>=15)
    gx -= 15;
        }
        else if(ch==77)
        {
    if(gx<=xend-25)
    gx += 15;
        }
        putimage(gx,yend-14,gun,XOR_PUT);
        if(ch==72&&life>0)
        {
    ats += 1;
    int remflag = 0;
    for(i=0;i<n;i++)
    {
        if(hitflag[i]>1)
        {
    hitflag[i]= 1;
    remflag = 1;
    hitx[i] = gx + 8 - 3;
    hity[i] = yend - 14 - 15;
    putimage(hitx[i],hity[i],bomb[i],XOR_PUT);
    break;
        }
    }
    if(remflag==0)
    {
        for(i=0;i<n;i++)
        if(hitflag[i]==0)
        {
    bct = i;
    nohits = i;
    break;
        }
        hitflag[bct] = 1;
        setcolor(10);
        setlinestyle(0,0,NORM_WIDTH);

        line(gx+8,yend-15,gx+8,yend-14-15);
        line(gx+8,yend-14-15,gx+5,yend-14-10);
        line(gx+8,yend-14-15,gx+11,yend-14-10);

        size1 = imagesize(gx+8-3,yend-15,gx+8+3,yend-14-15);
        bomb[bct] = malloc(size1);
        getimage(gx+8-3,yend-15,gx+8+3,yend-14-15,bomb[bct]);

        hitx[bct] = gx + 8 - 3;
        hity[bct] = yend - 14 - 15;
    }
        }
    }
    if(tolower(ch)=='e')
    {
        end();
    }
        }
        for(i=0;i<n;i++)
        if(hitflag[i]==1)
        {
    putimage(hitx[i],hity[i],bomb[i],XOR_PUT);
    hity[i] = hity[i] - 8;

    if(hitx[i]>=x&&hitx[i]<=x+20&&hity[i]>=5&&hity[i]<=25)
    {
        rhits();
        count += 3;
        rhit += 1;
        hitflag[i] = 2;
    }

    if(hitx[i]>=x1&&hitx[i]<=x1+20&&hity[i]>=150&&hity[i]<=170)
    {
        yhits();
        count += 2;
        yhit+=1;
        hitflag[i] = 2;
    }

    if(hitx[i]>=x2&&hitx[i]<=x2+20&&hity[i]>=250&&hity[i]<=270)
    {
        phits();
        count += 1;
        phit+=1;
        hitflag[i] = 2;
    }

    if(hity[i]<=2)
    {
        hitflag[i] = 2;
    }

    if(hitflag[i]==1)
    {
        putimage(hitx[i],hity[i],bomb[i],XOR_PUT);
    }
        }
        if(ti>=500)
        {
    gettime(&t);
    sprintf(msg,"   Current Time:%2d:%02d:%02d",t.ti_hour, t.ti_min,
t.ti_sec);

    setfillstyle(1,12);
    bar(xend+3,yend+3,getmaxx()-4,getmaxy()-4);
    setcolor(BLACK);
    settextstyle(0,0,0);

    outtextxy(xend+15,yend+10,msg);
    ti = 0;
        }


        putimage(x,5,ball,XOR_PUT);
        putimage(x1,150,ball1,XOR_PUT);
        putimage(x2,250,ball2,XOR_PUT);

        if(flag==1)
    x += speed;
        else
    x -= speed;

        if(x>=xend-23)
        {
    flag = 0;
        }
        if(x<=1)
        {
    flag = 1;
        }
        if(flag1==1)
    x1 += 1+speed;
        else
    x1 -= 1+speed;

        if(x1>=xend-23)
        {
    flag1 = 0;
        }
        if(x1<=1)
        {
    flag1 = 1;
        }
        if(flag2==1)
    x2 += 2+speed;
        else
    x2 -= 2+speed;

        if(x2>=xend-23)
        {
    flag2 = 0;
        }
        if(x2<=1)
        {
    flag2 = 1;
        }

        putimage(x,5,ball,XOR_PUT);
        putimage(x1,150,ball1,XOR_PUT);
        putimage(x2,250,ball2,XOR_PUT);


        for(i=0;i<n;i++)
        if(rflag[i]==1)
        putimage(rx[i],ry[i],rhrt[i],XOR_PUT);

        for(i=0;i<n;i++)
        if(yflag[i]==1)
        putimage(yx[i],yy[i],yhrt[i],XOR_PUT);

        for(i=0;i<n;i++)
        if(pflag[i]==1)
        putimage(px[i],py[i],phrt[i],XOR_PUT);

        for(i=0;i<n;i++)
        {
    if(rflag[i]==1)
    {
        ry[i] += speed+2;
        if(rx[i]>=gx-5&&rx[i]<=gx+20&&ry[i]>=yend-15&&ry[i]<=yend-5)
        {
//    count -= 3;
    rflag[i] = 2;
    life--;
        }
    }
        }

        for(i=0;i<n;i++)
        {
    if(yflag[i]==1)
    {
        yy[i] += speed+1;
        if(yx[i]>=gx-5&&yx[i]<=gx+20&&yy[i]>=yend-15&&yy[i]<=yend-5)
        {
//    count -= 2;
    yflag[i] = 2;
    life--;
        }
    }
        }

        for(i=0;i<n;i++)
        {
    if(pflag[i]==1)
    {
        py[i] += speed;
        if(px[i]>=gx-5&&px[i]<=gx+20&&py[i]>=yend-15&&py[i]<=yend-5)
        {
//    count -= 1;
    pflag[i] = 2;
    life--;
        }
    }
        }

        for(i=0;i<n;i++)
        if(ry[i]>=yend-5)
        {
    rflag[i] = 2;
        }

        for(i=0;i<n;i++)
        if(yy[i]>=yend-5)
        {
    yflag[i] = 2;
        }


        for(i=0;i<n;i++)
        if(py[i]>=yend-5)
        {
    pflag[i] = 2;
        }


        for(i=0;i<n;i++)
        if(rflag[i]==1)
        putimage(rx[i],ry[i],rhrt[i],XOR_PUT);

        for(i=0;i<n;i++)
        if(yflag[i]==1)
        putimage(yx[i],yy[i],yhrt[i],XOR_PUT);

        for(i=0;i<n;i++)
        if(pflag[i]==1)
        putimage(px[i],py[i],phrt[i],XOR_PUT);


        if(count<5) speed = 1;
        if(count>=30)  speed = 2;
        if(count>=60)  speed = 3;
        if(count>=90)  speed = 4;
        if(count>=120)  speed = 5;

        delay(12-speed);
        ti += 12-speed;
    }
}
void end(void)
{
    char m[3];
    sprintf(m,"%c",3);
    clrscr();
    cleardevice();
    restorecrtmode();
    textattr(11);

cprintf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$");
    gotoxy(20,3);
    cprintf("THE SCORE BOARD FOR HEART BREAK KID");
    printf("

");

cprintf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$");
    gotoxy(20,7);
    textattr(11);
    cprintf("TOTAL NUMBER OF FIRE SHOOTED : %d",ats);
    gotoxy(20,9);
    cprintf("TOTAL NUMBER OF POINTS SCORED : %d",count);
    gotoxy(20,11);
    textattr(RED);
    cprintf("TOTAL NUMBER OF HITS TO RED HEART : %d",rhit);
    gotoxy(20,13);
    textattr(YELLOW);
    cprintf("TOTAL NUMBER OF HITS TO YELLOW HEART : %d",yhit);
    gotoxy(20,15);
    textattr(12);
    cprintf("TOTAL NUMBER OF HITS OT PINK HEART : %d",phit);
    printf("

");
    textattr(11);

cprintf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$");
    getch();
/*    int gd=DETECT, gm;
    initgraph(&gd,&gm,"c:\tc\bgi");
    while(!kbhit())
    {
        setcolor(random(getmaxcolor()));
        settextstyle(0,0,1);
        outtextxy(random(getmaxx()),random(getmaxy()),m);
        setcolor(12);
        settextstyle(0,0,2);
        outtextxy(100,250,"THANK YOU FOR PLAYING HBK");
    }
    closegraph();
    restorecrtmode();*/
    exit(0);
}
void start(void)
{
    cleardevice();
    settextstyle(10,0,3);
    setcolor(12);
    outtextxy(150,100,"HEART BREAK KID");
    settextstyle(0,0,2);
    getch();
    cleardevice();
}
void rhits(void)
{
    int rflg = 0;
    for(j=0;j<n;j++)
    {
        if(rflag[j]>1)
        {
    rflag[j] = 1;
    rflg = 1;
    rx[j] = x-1;
    ry[j] = 26;
    putimage(rx[j],ry[j],rhrt[j],XOR_PUT);
    break;
        }
    }
    if(rflg==0)
    {
        rflag[rin] = 1;
        settextstyle(0,0,1);
        setcolor(RED);
        sprintf(msg,"%c",che);
        outtextxy(x,28,msg);
        size2 = imagesize(x-1,28-2,x+8,34);
        rhrt[rin] = malloc(size2);
        getimage(x-1,28-2,x+8,34,rhrt[rin]);
        rx[rin] = x-1;
        ry[rin] = 26;
        for(j=0;j<n;j++)
        if(rflag[j]==0)
        {
    rin = j;
    break;
        }
    }
}
void yhits(void)
{
    int yflg = 0;
    for(j=0;j<n;j++)
    {
        if(yflag[j]>1)
        {
    yflag[j] = 1;
    yflg = 1;
    yx[j] = x1-1;
    yy[j] = 171;
    putimage(yx[j],yy[j],yhrt[j],XOR_PUT);
    break;
        }
    }
    if(yflg==0)
    {
        yflag[yin] = 1;
        settextstyle(0,0,1);
        setcolor(YELLOW);
        sprintf(msg,"%c",che);
        outtextxy(x1,171,msg);
        size3 = imagesize(x1-1,171,x1+8,179);
        yhrt[yin] = malloc(size3);
        getimage(x1-1,171,x1+8,179,yhrt[yin]);
        yx[yin] = x1-1;
        yy[yin] = 171;
        for(j=0;j<n;j++)
        if(yflag[j]==0)
        {
    yin = j;
    break;
        }
    }
}
void phits(void)
{
    int pflg = 0;
    for(j=0;j<n;j++)
    {
        if(pflag[j]>1)
        {
    pflag[j] = 1;
    pflg = 1;
    px[j] = x2-1;
    py[j] = 281;
    putimage(px[j],py[j],phrt[j],XOR_PUT);
    break;
        }
    }
    if(pflg==0)
    {
        pflag[pin] = 1;
        settextstyle(0,0,1);
        setcolor(12);
        sprintf(msg,"%c",che);
        outtextxy(x2,281,msg);
        size4 = imagesize(x2-1,281,x2+8,289);
        phrt[pin] = malloc(size4);
        getimage(x2-1,281,x2+8,289,phrt[pin]);
        px[pin] = x2-1;
        py[pin] = 281;
        for(j=0;j<n;j++)
        if(pflag[j]==0)
        {
    pin = j;
    break;
        }
    }
}

Comments

Popular posts from this blog

8086 STRING MANIPULATION –FIND AND REPLACE A WORD

Animated Circles In C++

C program to find out the sum of series 1 + 2 + …. + n.