Mega Code Archive

 
Categories / C / Games Graphic
 

ARCHERY GAME

#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(2); sleep(4); }