Displaying Source Code(s)
|
|
ARCHERY GAME
--------------------------------------------------------------------------------
Description : ARCHERY GAME The Archery game is to shoot the
arrows to the concentric circles in the target board. Each
circle has its own points or score, for example the if the
circle at center is hit by arrow will score you 60 points and
other consecutive circles will score 50, 40, 30, 20 and 10
respectively. This game is done using C program. This game
mainly uses the functions defined in Graphics.h.
/*
***************************************************************
*/
/* Authors :K.Jayanth and S.Umashankar */
/* Dr.Mahalingam College of Engineering and Technology */
/* Pollachi -642003 E-mail:jayc02msc@drmcet.org */
/*
**************************************************************
*/
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<stdlib.h>
union REGS i,o;
int f;
struct arccoordstype arcinfo;
int t,flag=0;
int
gm=0,gd=DETECT,*button,*a,*b,c,bc,j,k,jk,h,x3,y3,alh=0,s,scor=0,sp=0,e,m=2
;
main()
{
//initgraph(&gm,&gd," ");
front();
closegraph();
//delay(10);
//sta();
a:
initgraph(&gd,&gm," ");
flag=0;
setbkcolor(0);
s=-60;e=60;
sound(221.38);
for(f=1;f<=20;f++)
{
setcolor(BLUE);
line(280,f+360,360,f+360);
}
setcolor(RED);
settextstyle(SMALL_FONT,HORIZ_DIR,4);
outtextxy(305,364,"SHOOT");
arrows(0);
setcolor(GREEN+WHITE);
rectangle(5,5,634,474);
rectangle(6,6,633,473);
setcolor(YELLOW);
rectangle(7,7,632,472);
setcolor(GREEN+WHITE);
rectangle(8,8,631,471);
rectangle(9,9,630,470);
rectangle(10,10,629,469);
setcolor(YELLOW);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);
outtextxy(530,20,"SCORE");
scor=0;
score(200);
m=6;
equip();
arrow1(0,14);
alh=0;
mousereg();
while(m>1) /* while start */
{
//button=0;
for(j=-70;j<=70;j+=2) /* start for*/
{ c=1;
tar(j,c);
delay(10);
getmouseptr(&button,&a,&b);
if(button==1)
{ x3=a;y3=b;
if((x3>280 && x3<360 )|| (y3>361 && y3<379))
{
bc=1;
}
}
if(bc==1)
{ //sound(277.38);
// delay(10);
nosound();
arrow1(0,0);
setcolor(YELLOW);
line(40+sp+36,240,80+sp+36,240);
line(80+sp+36,240,75+sp+36,235);
line(80+sp+36,240,75+sp+36,245);
line(40+sp+36,241,80+sp+36,241);
line(79+sp+36,240,74+sp+36,236);
line(79+sp+36,241,74+sp+36,245);
line(46+sp+36,240,41+sp+36,236);
line(46+sp+36,241,41+sp+36,245);
line(42+sp+36,240,37+sp+36,236);
line(42+sp+36,241,37+sp+36,245);
delay(8);
setcolor(0);
line(40+sp+36,240,80+sp+36,240);
line(80+sp+36,240,75+sp+36,235);
line(80+sp+36,240,75+sp+36,245);
line(40+sp+36,241,80+sp+36,241);
line(79+sp+36,240,74+sp+36,236);
line(79+sp+36,241,74+sp+36,245);
line(46+sp+36,240,41+sp+36,236);
line(46+sp+36,241,41+sp+36,245);
line(42+sp+36,240,37+sp+36,236);
line(42+sp+36,241,37+sp+36,245);
if((42+sp+36)>=116 && (42+sp+36)<=136)
{
equip();
}
sp=sp+3;
}
if((sp+80+36)>=579)
{ arrow1(0,14);
score(j);
bc=0; sp=0;
alh++;
button=0;
setcolor(YELLOW);
arrows(alh);
m--;
}
// sp=sp+3;
c=0;
tar(j,c);
} /* for end */
}/* while end */
sleep(1.5);
closegraph();
gaover();
setcolor(GREEN);
setcolor(1);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,4);
outtextxy(255,117,"SCORE");
setcolor(14+BLUE);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,3);
for(t=0;t<=360;t++)
{ setcolor(random(15));
ellipse(300,200,t,t+2,30,22);
delay(1);
setcolor(random(15));
ellipse(300,200,t,t+2,35,25);
}
setcolor(GREEN);
select(scor,-250,133);
for(t=0;t<=50;t++)
{
setcolor(14);
line(40+t,230,40+t,250);
line(560+t,230,560+t,250);
}
settextstyle(SMALL_FONT,HORIZ_DIR,4);
setcolor(BLUE);
outtextxy(45,235,"Continue");
outtextxy(575,235,"Quit");
restrictmouseptr(0,80,640,440);
flag=0;
while(flag==0)
{
showmouseptr();
getmouseptr(&button,&a,&b);
if(button==1)
{ x3=a;y3=b;
if((x3>41 && x3<79 )&& (y3>231 && y3<249))
{
flag=1;
//break;
}
else if((x3>=561 && x3<=599 )&& (y3>=231 && y3<=249))
{
flag=2;
//break;
}
}
}
if(flag==1)
goto a;
else
{if(flag==2)
{initgraph(&gd,&gm,"");
finalwindow();
closegraph();
goto b;}}
// next();
b: getch();
}//ending of main function
/* sub function target starting*/
arrow1(int sp,int col)
{ setcolor(col); //sound(277.38);
line(40+sp+36,240,80+sp+36,240);
line(80+sp+36,240,75+sp+36,235);
line(80+sp+36,240,75+sp+36,245);
line(40+sp+36,241,80+sp+36,241);
line(79+sp+36,240,74+sp+36,236);
line(79+sp+36,241,74+sp+36,245);
line(46+sp+36,240,41+sp+36,236);
line(46+sp+36,241,41+sp+36,245);
line(42+sp+36,240,37+sp+36,236);
line(42+sp+36,241,37+sp+36,245);
nosound();
}
tar(j,c)
{
setcolor(c*4);
ellipse(579,240+j,0,360,40,90);
setcolor(c*3);
ellipse(579,240+j,0,360,33,75);
setcolor(c*5);
ellipse(579,240+j,0,360,26,60);
setcolor(c*9);
ellipse(579,240+j,0,360,19,45);
setcolor(c*8);
ellipse(579,240+j,0,360,12,30);
setcolor(c*10);
ellipse(579,240+j,0,360,5,15);
}
initmouse()
{
i.x.ax=0;
int86(0x33,&i,&o);
return(o.x.ax);
}
showmouseptr()
{
i.x.ax=1;
int86(0x33,&i,&o);
}
restrictmouseptr(int x1,int y1,int x2,int y2)
{
i.x.ax=7;
i.x.cx=x1;
i.x.dx=x2;
int86(0x33,&i,&o);
i.x.ax=8;
i.x.cx=y1;
i.x.dx=y2;
int86(0x33,&i,&o);
}
getmouseptr(int *button,int *a,int *b)
{
i.x.ax=3;
int86(0x33,&i,&o);
*button=o.x.bx;
*a=o.x.cx;
*b=o.x.dx;
}
mousereg()
{
int x1,x2,y1,y2,ce,k;
initmouse();
showmouseptr();
restrictmouseptr(281,361,359,379);
}
arrows(alh)
{ int z=0,r;
r=5-alh;
setcolor(YELLOW);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);
outtextxy(30,20,"ARROWS REMAINING");
for(f=r,z=0;f>0;f--)
{
line(40,60+z*10,80,60+z*10);
line(80,60+z*10,75,55+z*10);
line(80,60+z*10,75,65+z*10);
z=z+1;
}
for(f=alh,z=0;f>0;f--)
{
setcolor(0);
line(40,60+z*10,80,60+z*10);
line(80,60+z*10,75,55+z*10);
line(80,60+z*10,75,65+z*10);
z=z+1;
}
}
score (int j)
{
if( (j>=-90 && j<=-74) || (j>=74 && j<=90))
scor=scor+10;
else if((j>=-72 && j<=-60) || (j>=60 && j<=72))
scor=scor+20;
else if((j>=-58 && j<=-42) || (j>=42 && j<=58))
scor=scor+30;
else if((j>=-40 && j<=-32) || (j>=32 && j<=40))
scor=scor+40;
else if((j>=-30 && j<=-18) || (j>=18 && j<=30))
scor=scor+50;
else if((j>=-16 && j<=0) || (j>=0 && j<=16))
scor=scor+60;
else if (j == 300)
scor=0;
for(jk=50;jk<=120;jk++)
{setcolor(0);
line(530,jk,620,jk);
}
setcolor(YELLOW);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);
select(scor,0,0);
}
front1()
{
int gm=0,gd=DETECT,i,j,k,jk,gh;
initgraph(&gd,&gm," ");
setcolor(MAGENTA);
rectangle(10,10,639,469);
rectangle(12,12,637,467);
for(i=12;i<=627;i+=12)
{
setcolor(YELLOW);
line(i,12,i,467);
//clearviewport();
for(j=15;j<=464;j+=5)
ellipse(i+6,j,-180,0,6,4);
}
for(i=3;i<=452;i+=5)
{ for(j=15;j<=627;j+=3)
{setcolor(0);
ellipse(j,467-i,-180,0,3,4);
}delay(40);
setcolor(BLACK);
for(k=1;k<=5;k++)
{
line(12,467-i+k,637,467-i+k); }
//setcolor(25);
setcolor(GREEN+MAGENTA+WHITE+BLUE+YELLOW);
rectangle(10,10,639,469);
rectangle(12,12,637,467);
}
setcolor(2);
rectangle(290,370,350,380);
rectangle(292,372,348,378);
gh=292; //gh<=388;
for(j=1;j<=56;j+=1)
{ /* for(i=24;i<=627;i+=12)
{setcolor(i);
circle(i,23,3);
delay(1);
} */ jk=20;
for(i=24;i<=627;i+=12)
{setcolor(random(15));
circle(i,23,3);
sound(440+jk);
delay(10);
nosound();
setcolor(YELLOW);
rectangle(gh,372,gh,378);
//rectangle(282,362,358,388);}
jk+=40;
if(jk>=880)
{ jk=440;}
}
gh=gh+1;
nosound();
}
sleep(.1);
closegraph();
}
equip()
{
int kl=2;
int midx, midy,i,j,k,y=90,c;
// int stangle = 45, endangle = 270;
c=y/2;
for(c=50;c<=52;c+=1)
{ setcolor(kl);
line(26+c,170,26+c,310);
}
for(c=50;c<=54;c+=1)
{ setcolor(kl);
line(60+c,222,60+c,255);
}
for(c=180;c<=270;c++)
{
// arc(80,92,c,c+1,20);
setcolor(0);
arc(86,166,c,c+1,10);
getarccoords(&arcinfo);
setcolor(kl);
circle(arcinfo.xend, arcinfo.yend,2);
}
for(c=-50;c<=110;c++)
{
// arc(80,92,c,c+1,20);
setcolor(0);
arc(96,201,c,c+1,28);
getarccoords(&arcinfo);
setcolor(kl);
circle(arcinfo.xend, arcinfo.yend,2);
}
for(c=50,i=4;c>=-110;c--)
{
// arc(80,92,c,c+1,20);
setcolor(0);
line(127,170,127,315);
line(126,170,126,315);
arc(96,278,c,c+1,28);
getarccoords(&arcinfo);
setcolor(kl);
i=i+2;
if(i>14)
{i=2;}
circle(arcinfo.xend,arcinfo.yend,2);
}
for(c=90;c<=180;c++)
{
// arc(80,92,c,c+1,20);
setcolor(0);
arc(86,314,c,c+1,10);
getarccoords(&arcinfo);
setcolor(kl);
circle(arcinfo.xend, arcinfo.yend,2);
//setcolor(2);
}
}
sta()
{
int x,y=200,i,st,kl;
//initgraph(&gd,&gm,"");
setcolor(5);
for(st=190,i=2;st>=-20;st-=9,i+=3)
{
setcolor(GREEN);
arc(320,290,st,st+2,190);
getarccoords(&arcinfo);
delay(5);
x=arcinfo.xend;
y=arcinfo.yend;
sound(300-st);
star(x,y);
delay(24);
}
for(st=190,i=2;st>=-17;st-=9,i+=3)
{
setcolor(YELLOW);
arc(320,285,st,st+2,230);
getarccoords(&arcinfo);
delay(5);
x=arcinfo.xend;
y=arcinfo.yend;
sound(320-st);
star(x,y);
delay(24);
}
nosound();
settextstyle(TRIPLEX_FONT,HORIZ_DIR,3);
for(i=140;i>=20;i-=10)
{
setcolor(8);
delay(13);
ya(i);
delay(13);
setcolor(4);
r(i);
delay(13);
setcolor(2);
e1(i);
delay(13);
h1(i);
delay(13);
c1(i);
delay(13);
r1(i);
delay(13);
a1(i);
delay(13);
/*line(320,240,325,233); // /1
line(325,233,330,240); // 1
line(330,240,337,240); // right hori
line(320,240,313,240); //left hori
line(313,240,318,247); // left horiz to right
line(337,240,332,247); // right horiz to left /
line(332,247,334,253); // left / to right
line(318,247,316,253); // right to left /
line(316,253,325,247);
line(334,253,325,247);*/
// getch();
}
}
ya(int i)
{
if(i==120)
{
delay(1);
setcolor(4);
// delay(800);
outtextxy(300+i,230,"Y");
}setcolor(14);
delay(1);
outtextxy(420,230,"Y"); //440
}
r(int i)
{
if(i==90)
{
setcolor(2);
delay(1);
outtextxy(300+i,230,"R");
}setcolor(14);
delay(1);
outtextxy(390,230,"R"); // 420
}
e1(int i)
{
if(i==60)
{
setcolor(2);
delay(1);
outtextxy(300+i,230,"E");
}setcolor(14);
delay(1);
outtextxy(360,230,"E"); //400
}
h1(int i)
{
if(i==30)
{
setcolor(2);
delay(1);
outtextxy(300+i,230,"H");
}setcolor(14);
delay(1);
outtextxy(330,230,"H"); //380
}
c1(int i)
{
if(i==60)
{
setcolor(2);
delay(1);
outtextxy(300+i-i,230,"C");
}setcolor(14);
delay(1);
outtextxy(300,230,"C"); //360
}
r1(int i)
{
if(i==40)
{
setcolor(2);
delay(1);
outtextxy(300+i-70,230,"R");
}setcolor(14);
delay(1);
outtextxy(270,230,"R"); // 340
}
a1(int i)
{
if(i==20)
{
setcolor(2);
delay(1);
outtextxy(300+i-80,230,"A");
}setcolor(14);
delay(1);
outtextxy(240,230,"A"); //320
}
star(x,y)
{
delay(80);
line(x,y,x+5,y-7); // /1 x=320, y=240
line(x+5,y-7,x+10,y); // 1
line(x+10,y,x+17,y); // right hori
line(x,y,x-7,y); //left hori
line(x-7,y,x-2,y+7); // left horiz to right
line(x+17,y,x+12,y+7); // right horiz to left /
line(x+12,y+7,x+14,y+13); // left / to right
line(x-2,y+7,x-4,y+13); // right to left /
line(x-4,y+13,x+5,y+7);
line(x+14,y+13,x+5,y+7);
}
front()
{
int gm=0,gd=DETECT,i,j,k,jk,gh;
initgraph(&gd,&gm," ");
setcolor(MAGENTA);
rectangle(10,10,639,469);
rectangle(12,12,637,467);
for(i=12;i<=627;i+=12)
{
setcolor(YELLOW);
line(i,12,i,467);
//clearviewport();
for(j=15;j<=464;j+=5)
ellipse(i+6,j,-180,0,6,4);
}
for(i=3;i<=452;i+=5)
{ for(j=15;j<=627;j+=3)
{setcolor(0);
ellipse(j,467-i,-180,0,3,4);
}delay(40);
setcolor(BLACK);
for(k=1;k<=5;k++)
{
line(12,467-i+k,637,467-i+k); }
//setcolor(25);
setcolor(GREEN+MAGENTA+WHITE+BLUE+YELLOW);
rectangle(10,10,639,469);
rectangle(12,12,637,467);
}
setcolor(2);
rectangle(290,370,350,380);
rectangle(292,372,348,378);
gh=292; //gh<=388;
for(j=1;j<=56;j+=1)
{ /* for(i=24;i<=627;i+=12)
{setcolor(i);
circle(i,23,3);
delay(1);
} */ jk=20;
for(i=24;i<=627;i+=12)
{setcolor(random(15));
circle(i,23,3);
sound(200-i);
delay(1);
nosound();
setcolor(YELLOW);
rectangle(gh,372,gh,378);
//rectangle(282,362,358,388);}
jk+=40;
if(jk>=880)
{ jk=440;}
}
gh=gh+1;
nosound();
}
//printf("sdfs");
sta();
sleep(.1);
//closegraph();
}
gaover()
{
int gm=0,gd=DETECT,i,j;
initgraph(&gd,&gm," ");
for(i=1;i<=51;i+=4)
{
setcolor(i);
sound(400-i);
outtextxy(260,340,"GAME OVER");
if(i==49)
{
setcolor(YELLOW);
outtextxy(260,340,"GAME OVER");
}
nosound();
go(0,60,20,80,random(15),random(15));
delay(3);
go(400,460,420,480,random(15),random(15));
}
//getch();
}
go(int sy1,int ey1,int sy2,int ey2,int k,int h)
{
int i,j;
for(j=sy1;j<=ey1;j+=40) //120
{
for(i=0;i<=640;i+=40)
{
setcolor(k);
rectangle(i,1+j,20+i,21+j);
setfillstyle(SOLID_FILL,k);
floodfill(10+i,10+j,k);
setcolor(h);
rectangle(20+i,1+j,40+i,21+j);
setfillstyle(SOLID_FILL,h);
floodfill(25+i,10+j,h);
}
}
for(j=sy2;j<=ey2;j+=40)
{
for(i=0;i<=640;i+=40)
{
setcolor(h);
rectangle(i,1+j,20+i,21+j);
setfillstyle(SOLID_FILL,h);
floodfill(10+i,10+j,h);
setcolor(k);
rectangle(20+i,1+j,40+i,21+j);
setfillstyle(SOLID_FILL,k);
floodfill(25+i,10+j,k);
}
}
//
}
select(int scor,int p,int q)
{
switch(scor)
{ case 0: outtextxy(530+p,50+q,"0");
break;
case 10: outtextxy(530+p,50+q,"10");
break;
case 20: outtextxy(530+p,50+q,"20");
break;
case 30: outtextxy(530+p,50+q,"30");
break;
case 40: outtextxy(530+p,50+q,"40");
break;
case 50: outtextxy(530+p,50+q,"50");
break;
case 60: outtextxy(530+p,50+q,"60");
break;
case 70: outtextxy(530+p,50+q,"70");
break;
case 80: outtextxy(530+p,50+q,"80");
break;
case 90: outtextxy(530+p,50+q,"90");
break;
case 100: outtextxy(530+p,50+q,"100");
break;
case 110: outtextxy(530+p,50+q,"110");
break;
case 120: outtextxy(530+p,50+q,"120");
break;
case 130: outtextxy(530+p,50+q,"130");
break;
case 140: outtextxy(530+p,50+q,"140");
break;
case 150: outtextxy(530+p,50+q,"150");
break;
case 160: outtextxy(530+p,50+q,"160");
break;
case 170: outtextxy(530+p,50+q,"170");
break;
case 180: outtextxy(530+p,50+q,"180");
break;
case 190: outtextxy(530+p,50+q,"190");
break;
case 200: outtextxy(530+p,50+q,"200");
break;
case 210: outtextxy(530+p,50+q,"210");
break;
case 220: outtextxy(530+p,50+q,"220");
break;
case 230: outtextxy(530+p,50+q,"230");
break;
case 240: outtextxy(530+p,50+q,"240");
break;
case 250: outtextxy(530+p,50+q,"250");
break;
case 260: outtextxy(530+p,50+q,"260");
break;
case 270: outtextxy(530+p,50+q,"270");
break;
case 280: outtextxy(530+p,50+q,"280");
break;
case 290: outtextxy(530+p,50+q,"290");
break;
case 300: outtextxy(530+p,50+q,"300");
break;
case 310: outtextxy(530+p,50+q,"310");
break;
case 320: outtextxy(530+p,50+q,"320");
break;
case 330: outtextxy(530+p,50+q,"330");
break;
case 340: outtextxy(530+p,50+q,"340");
break;
case 350: outtextxy(530+p,50+q,"350");
break;
case 360: outtextxy(530+p,50+q,"360");
break;
} }
flower(int i,int j)
{
setcolor(14);
circle(320+i,240+j,10);
setfillstyle(SOLID_FILL,RED);
floodfill(323+i,241+j,14);
//1
setcolor(14);
//floodfill(316,223,13);
ellipse(310+i,220+j,90,-90,6,12);
ellipse(330+i,220+j,-90,90,6,12);
ellipse(320+i,207+j,180,0,8,2);
//2
ellipse(310+i,260+j,90,-90,6,12);
ellipse(330+i,260+j,-90,90,6,12);
ellipse(320+i,273+j,0,180,8,2);
//3
ellipse(298+i,248+j,180,0,12,6);
ellipse(298+i,233+j,0,180,12,6);
ellipse(286+i,240+j,-90,90,2,8);
//4
ellipse(342+i,247+j,180,0,12,6);
ellipse(342+i,233+j,0,180,12,6);
ellipse(354+i,240+j,90,-90,2,8);
}
finalwindow()
{
for(k=-285;k<=320;k+=70)
{ flower(k,-205);
flower(k,+180);
//clearviewport();
delay(100);
}
for(k=-140;k<=180;k+=40)
{ flower(-285,k);
flower(276,k);
//clearviewport();
delay(100);
}
setcolor(10);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,3);
outtextxy(110,100,"BY,");
setcolor(9);
//settextstyle(SMALL_FONT,HORIZ_DIR,6);
outtextxy(180,180,"S.UMASHANKAR WIPRO ");
setcolor(10);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,6);
outtextxy(280,220,"&");
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,3);
setcolor(9);
outtextxy(200,300,"K.JAYANTH III M.SC SE");
setcolor(2);
sleep(4);
} |
|
|