0% found this document useful (0 votes)
236 views15 pages

Balloon Shooting: CG Project1

This document describes a balloon shooting game project created by three computer engineering students. The game allows the player to shoot arrows from a bow to pop balloons floating across the screen. The player progresses through three levels and aims to score points by popping as many balloons as possible before running out of arrows. Instructions are provided on how to control the bow with arrow keys and shoot arrows to hit the balloons.

Uploaded by

Rebeck Carvalho
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
236 views15 pages

Balloon Shooting: CG Project1

This document describes a balloon shooting game project created by three computer engineering students. The game allows the player to shoot arrows from a bow to pop balloons floating across the screen. The player progresses through three levels and aims to score points by popping as many balloons as possible before running out of arrows. Instructions are provided on how to control the bow with arrow keys and shoot arrows to hit the balloons.

Uploaded by

Rebeck Carvalho
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 15

CG PROJECT1

BALLOON SHOOTING

Members-: 08. ReynoldCarvalho (S.E COMPUTER ENGG)

11. Ashley Curel (S.E COMPUTER ENGG)

07. Calvin Cleetus (S.E COMPUTER ENGG)

Don Bosco Institute Of Technology

Premier Automobiles Road, Opp. Fiat Company,

Kurla (W), Mumbai- 400 070


# include "graphics.h"

# include "conio.h"

# include "stdio.h"

# include "stdlib.h"

# include "dos.h"

#define ARROW_SIZE 7

#define BALLOON_SIZE 3

int flag_arrow=0,flag_balloon=1,count_arrow=6,count_balloon=10;

void *balloon,*bow,*arrow,*burst;

void *clear_balloon,*clear_burst;

void draw_balloon(int ,int );

void draw_burst ( int x, int y );

void draw_bow(int x,int y);

void draw_arrow(int x, int y);

void shoot(int *x, int *y);

int testkeys();

void fly(int *x, int *y);

void start();

void main()

int gmode = DETECT, gdriver , area ;

initgraph ( &gmode, &gdriver, "c:\\tc\\bgi\\" ) ;

setbkcolor(1);

start();

int maxx = getmaxx() ;


int maxy = getmaxy() ;

int p=400,q=300,m=100,n=100,x=m,y=n,key,score=0,finish=0,level=1,l_flag=1;

char score1[5],ch,cnt_ball[5],char_level[2];

rectangle ( 0, 0, maxx, maxy - 10 ) ;

draw_burst(200,300);

area=imagesize(0,0,32,24);

burst=malloc(area);

getimage(200-16,300-12,200+16,300+12,burst);

putimage(200-16,300-12,burst,XOR_PUT);

draw_balloon(p,q);

area=imagesize(p-4*BALLOON_SIZE,q-5*BALLOON_SIZE,p+4*BALLOON_SIZE,q+7*BALLOON_SIZE);

balloon=malloc(area);

getimage(p-4*BALLOON_SIZE,q-5*BALLOON_SIZE,p+4*BALLOON_SIZE,q+7*BALLOON_SIZE,balloon);

putimage(p-4*BALLOON_SIZE, q-5*BALLOON_SIZE, balloon, COPY_PUT);

draw_arrow(x ,y );

area = imagesize(x, y-ARROW_SIZE, x+(6*ARROW_SIZE), y+ARROW_SIZE);

arrow=malloc(area);

getimage(x, y-ARROW_SIZE, x+(6*ARROW_SIZE), y+ARROW_SIZE,arrow);

putimage(x, y-ARROW_SIZE,arrow,XOR_PUT);

draw_bow(x,y);

area=imagesize(x+25,y-65,x+66,y+65);

bow=malloc(area);
getimage(x+25,y-65,x+66,y+65,bow);

if ( balloon == NULL || burst == NULL || bow == NULL )

printf( "Insufficient memory... Press any key " ) ;

getch() ;

closegraph() ;

restorecrtmode() ;

exit( 0 ) ;

while (!finish)

{ settextstyle(8,0,1);

setusercharsize(4,4,3,3);

outtextxy(getmaxx()/2-100,5,"LEVEL : ");

itoa(level,char_level,10);

setfillstyle(0,0);

bar(getmaxx()/2+40,15,getmaxx()/2+70,45);

outtextxy(getmaxx()/2+50,5,char_level);

rectangle(5,360,250,460);

if( flag_balloon && count_balloon>0 )

fly( &p, &q );

else

q = 400;

flag_balloon = 1;
}

if( kbhit() )

key = testkeys();

if(key==77)

flag_arrow = 1;

if( key == 27 )

break;

if (key == 80 &&!flag_arrow)

x=125;

putimage(x,y-65,bow,XOR_PUT);

if(y<300)

y+=25;

putimage(x,y-65,bow,XOR_PUT);

draw_bow(x-25,y);

key=0;

if (key == 72 &&!flag_arrow)

x=125;

putimage(x,y-65,bow,XOR_PUT);

if(y>70)

y-=25;
putimage(x,y-65,bow,XOR_PUT);

draw_bow(x-25,y);

key=0;

if(count_arrow > 0 && count_balloon > 0)

if(score==100 && l_flag==1)

level=2;

count_balloon=8;

count_arrow=6;

l_flag=2;

if(score==180 && l_flag==2)

level=3;

count_balloon=6;

count_arrow=6;

l_flag=0;

if( key == 77 || flag_arrow)

shoot(&x,&y);

draw_bow(m,y);

if(x>(p-12) && x<(p+12) && y>(q-15) && y<(q+25))

putimage(p-16,q-12,burst,COPY_PUT);
sound(1500);

delay(800);

nosound();

putimage(p-16,q-12,burst,XOR_PUT);

count_balloon--;

settextstyle(10,0,1);

setusercharsize(30,70,20,70);

outtextxy(20,380,"BALLOONS LEFT:");

setfillstyle(0,0);

bar(200,370,230,400);

itoa(count_balloon,cnt_ball,10);

outtextxy(200,380,cnt_ball);

flag_balloon=0;

score+=20;

itoa(score,score1,10);

setfillstyle(0,0);

bar(190,getmaxy()-50,230,getmaxy()-30);

setcolor(RED);

outtextxy(20,getmaxy()-50,"SCORE : ");

outtextxy(190,getmaxy()-50,score1);

key=0;

else

{
clearviewport();

setbkcolor(9);

setcolor(10);

settextstyle(4,0,7);

setusercharsize(120,50,120,40);

outtextxy(getmaxx()/2-220,getmaxy()/2-180,"GAME OVER");

settextstyle(8,0,1);

setusercharsize(50,60,40,50);

if(count_arrow<=0)

outtextxy(getmaxx()/2-100,getmaxy()/2-70,"NO MORE ARROWS");

if(count_balloon<=0)

outtextxy(getmaxx()/2-120,getmaxy()/2-70,"NO MORE BALLOONS");

outtextxy(getmaxx()/2-120,getmaxy()/2-20,"YOUR SCORE IS : ");

itoa(score,score1,10);

outtextxy(getmaxx()/2+150,getmaxy()/2-20,score1);

if(level==1)

outtextxy(getmaxx()/2-220,getmaxy()/2+20,"YOU REQUIRE TO PRACTICE MORE");

if(level==2)

outtextxy(getmaxx()/2-70,getmaxy()/2+20,"WELL PLAYED");

if(level==3)

outtextxy(getmaxx()/2-220,getmaxy()/2+20,"YOU ARE AN EFFICIENT SHOOTER");

outtextxy(getmaxx()/2-30,getmaxy()/2+50,"(Q)UIT");
settextstyle(1,0,1);

setusercharsize(30,65,30,60);

while( getch() != 'q');

finish=1;

break;

free(bow);

free(arrow);

free(balloon);

closegraph();

void draw_balloon(int x,int y)

{ setcolor(RED);

setfillstyle(1,RED);

fillellipse(x,y,3*BALLOON_SIZE,4*BALLOON_SIZE);

line(x,y+4*BALLOON_SIZE,x,y+6*BALLOON_SIZE);

void draw_burst ( int x, int y )

{ setlinestyle(0,0,1);

line ( x - 16, y - 12, x - 10, y - 2 ) ;

line ( x - 10, y - 2, x - 16, y ) ;

line ( x - 16, y, x - 10, y + 2 ) ;

line ( x - 10, y + 2, x - 16, y + 12 ) ;


line ( x - 16, y + 12, x - 6, y + 2 ) ;

line ( x - 6, y + 2, x, y + 12 ) ;

line ( x, y + 12, x + 6, y + 2 ) ;

line ( x + 6, y + 2, x + 16, y + 12 ) ;

line ( x - 16, y - 12, x - 6, y - 2 ) ;

line ( x - 6, y - 2, x, y - 12 ) ;

line ( x, y - 12, x + 6, y - 2 ) ;

line ( x + 6, y - 2, x + 16, y - 12 ) ;

line ( x + 16, y - 12, x + 10, y - 2 ) ;

line ( x + 10, y - 2, x + 16, y ) ;

line ( x + 16, y, x + 10, y + 2 ) ;

line ( x + 10, y + 2, x + 16, y + 12 ) ;

void draw_bow(int x,int y)

{ setcolor(RED);

setlinestyle(0,0,1);

line(x+32,y-49,x+32,y+49);

setlinestyle(0,0,3);

arc(x,y,300,60,60);

arc(x+34,y-56,100,220,6);

arc(x+34,y+56,140,260,6);

}
void shoot(int *x, int *y)

{ char cnt_arrow[5];

putimage(*x, *y-ARROW_SIZE, arrow, COPY_PUT);

delay(3);

putimage(*x, *y-ARROW_SIZE, arrow, XOR_PUT);

*x+=ARROW_SIZE;

if (*x>590)

*x=155;

flag_arrow=0;

count_arrow--;

settextstyle(10,0,1);

setusercharsize(30,70,20,70);

outtextxy(20,400,"ARROWS LEFT :");

setfillstyle(0,WHITE);

bar(200,400,220,425);

itoa(count_arrow,cnt_arrow,10);

outtextxy(200,400,cnt_arrow);

void draw_arrow(int x, int y)

{ setlinestyle(0,0,2);

moveto(x, y);

linerel(6*ARROW_SIZE, 0);
linerel(-2*ARROW_SIZE, -1*ARROW_SIZE+1);

linerel(0, 2*ARROW_SIZE-1);

linerel(2*ARROW_SIZE, -1*ARROW_SIZE);

int testkeys()

{ union REGS ii, oo ;

ii.h.ah = 0 ;

int86 ( 22, &ii, &oo ) ;

/* if ascii code is not 0 */

if ( oo.h.al )

return ( oo.h.al ) ; /* return ascii code */

else

return ( oo.h.ah ) ; /* return scan code */

void fly(int *x, int *y) {

{ int x1;

putimage(*x-4*BALLOON_SIZE, *y-5*BALLOON_SIZE, balloon, COPY_PUT);

delay(20);

char cnt_ball[5];

putimage(*x-4*BALLOON_SIZE, *y-5*BALLOON_SIZE, balloon, XOR_PUT);

*y-=BALLOON_SIZE;

if(*y<= 20)

*y=400;
x1=450+rand()%150;

*x=x1;

count_balloon--;

settextstyle(10,0,1);

setusercharsize(30,70,20,70);

outtextxy(20,380,"BALLOONS LEFT:");

setfillstyle(0,0);

bar(200,370,230,400);

itoa(count_balloon,cnt_ball,10);

outtextxy(200,380,cnt_ball);

void start()

{ setbkcolor(0);

settextstyle(7,0,0);

outtextxy(10,400," PRESS ANY KEY TO CONTINUE....");

settextstyle(1,0,0);

setcolor(4);

setusercharsize(25,15,20,4);

outtextxy(85,120,"BALLOON SHOOTING");

float octave[7] = { 130.81, 146.83, 164.81, 174.61, 196, 220, 246.94

};

while( !kbhit() )

sound( octave[ random(7) ]*4 );

delay(300);
}

nosound();

getch();

clearviewport();

rectangle(1,1,638,478);

settextstyle(3,0,1);

setusercharsize(50,30,50,30);

outtextxy(150,10,"INSTRUCTIONS");

setbkcolor(10);

settextstyle(1,0,1);

setusercharsize(40,70,20,20);

outtextxy(10,70,"1. You can play three levels.");

outtextxy(10,110,"2. You can move the bow UP and DOWN with the help of arrow keys.");

outtextxy(10,150,"3. Press right arrow key to shoot the arrow.");

outtextxy(10,190,"4. You score 20 points every time you shoot the balloon.");

outtextxy(10,230,"5. First level has 6 arrows and 10 balloons.");

outtextxy(10,270,"6. You require to score 100 points to enter the second level.");

outtextxy(10,310,"7. Second level has 6 arrows and 8 balloons.");

outtextxy(10,350,"8. You require to score 200 points to enter the third level.");

outtextxy(10,390,"9. Third level has 6 arrows and 6 balloons.");

settextstyle(7,0,1);

outtextxy(150,430,"PRESS ANY KEY TO CONITINUE");

getch();

setusercharsize(1,1,1,1);

settextstyle(0,0,0);

setbkcolor(10);
clearviewport();

You might also like