Created
November 5, 2013 09:23
-
-
Save Codeplaza/7316237 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<iostream.h> | |
#include<conio.h> | |
#include<string.h> | |
#include<graphics.h> | |
#include<process.h> | |
#include<dos.h> | |
#include<stdio.h> | |
#include<stdlib.h> | |
#include<math.h> | |
//structure declaration | |
struct scorechart { | |
char player[45]; | |
int scor; | |
}; | |
struct scorechart s1[5]; | |
//global variables | |
union REGS i, o; | |
char buff[80]; | |
int hit = 0, life = 1; | |
int m1 = 1, m2 = 1, m3 = 1, m4 = 1, m5 = 1, gover = 0; | |
int level1 = 1, check = 0, score = 0, mid, flag = 0; | |
char buffer1[80], buffer[80]; | |
int count = 0, ascii, z1 = 625, scan, m = 60, n = 70, p = 80, q = 50, r; | |
int left = 10, top = 285, right = 63, bottom = 285; | |
unsigned int size, size1, size2, size3, size4, globalsize, handsize, eyesize; | |
void *pball, *pball1, *pball2, *pball3, *pball4, *handimage, *peye; | |
void *iball, *iball1, *iball2, *iball3; | |
//function declaration | |
void image1(); | |
void image(); | |
void hand(); | |
void arrow(int); | |
int shoot(int); | |
void game(); | |
void ball(); | |
void eyelevel(); | |
void balllevel2(); | |
void gethighscores(); | |
void displaytopscore(); | |
void updatehighscore(); | |
void writehighscorestodisk(); | |
//function defintion | |
void hand() | |
{ | |
setcolor(8); | |
setlinestyle(0, 1, 3); | |
setfillstyle(1, 8); | |
bar(14, 197, 19, 215); | |
line(19, 198, 23, 198); | |
line(22, 200, 29, 192); | |
line(29, 192, 38, 192); | |
line(37, 192, 37, 197); | |
line(32, 197, 54, 197); | |
line(54, 197, 54, 202); | |
line(32, 202, 54, 202); | |
line(32, 207, 42, 207); | |
line(32, 212, 42, 212); | |
line(42, 212, 42, 202); | |
line(38, 212, 38, 217); | |
line(38, 217, 14, 217); | |
handsize = imagesize(14, 190, 56, 220); | |
/* allocate memory to hold the image */ | |
handimage = malloc(handsize); | |
/* grab the image */ | |
getimage(14, 190, 56, 220, handimage); | |
cleardevice(); | |
} | |
void image1() | |
{ | |
unsigned int s, s1, s2, s3; | |
setlinestyle(0, 1, 3); | |
setcolor(RED); | |
circle(500, 60, 20); | |
setfillstyle(1, 12); | |
floodfill(500, 60, RED); | |
circle(430, 70, 20); | |
setfillstyle(1, YELLOW); | |
floodfill(430, 70, RED); | |
circle(360, 80, 20); | |
setfillstyle(1, 9); | |
floodfill(360, 80, RED); | |
setcolor(RED); | |
circle(290, 50, 20); | |
setfillstyle(1, 6); | |
floodfill(290, 50, RED); | |
s = imagesize(470, 35, 530, 85); //k | |
s1 = imagesize(400, 45, 460, 95); //l | |
s3 = imagesize(330, 55, 390, 105); //e | |
s2 = imagesize(260, 25, 320, 75); //f | |
/* allocate memory to hold the image */ | |
iball = malloc(s); | |
iball1 = malloc(s1); | |
iball2 = malloc(s2); | |
iball3 = malloc(s3); | |
/* grab the image */ | |
getimage(470, 35, 530, 85, iball); | |
getimage(400, 45, 460, 95, iball1); | |
getimage(330, 55, 390, 105, iball2); | |
getimage(260, 25, 320, 75, iball3); | |
putimage(470, 35, iball, XOR_PUT); | |
putimage(400, 45, iball1, XOR_PUT); | |
putimage(330, 55, iball2, XOR_PUT); | |
putimage(260, 25, iball3, XOR_PUT); | |
} | |
void conveximage() | |
{ | |
setlinestyle(0, 1, 3); | |
setcolor(4); | |
ellipse(500, 55, 0, 360, 13, 35); | |
setfillstyle(1, 9); | |
fillellipse(500, 55, 13, 35); | |
setcolor(0); | |
putpixel(500, 55, 4); | |
setlinestyle(0, 1, 1); | |
ellipse(500, 55, 0, 360, 10.5, 4.5); | |
circle(500, 55, 4); | |
eyesize = imagesize(480, 15, 520, 95); | |
peye = malloc(size); | |
getimage(480, 15, 520, 95, peye); | |
putimage(480, 15, peye, XOR_PUT); | |
} | |
void image() | |
{ | |
setlinestyle(0, 1, 3); | |
setcolor(RED); | |
circle(460, 420, 25); | |
setfillstyle(1, YELLOW); | |
floodfill(460, 420, 4); | |
circle(470, 330, 25); | |
setfillstyle(1, 11); | |
floodfill(470, 330, RED); | |
circle(480, 240, 25); | |
setfillstyle(1, 9); | |
floodfill(480, 240, RED); | |
circle(490, 150, 25); | |
setfillstyle(1, 3); | |
floodfill(490, 150, RED); | |
circle(500, 60, 25); | |
setfillstyle(1, 10); | |
floodfill(500, 60, RED); | |
settextstyle(0, 0, 5); | |
sprintf(buffer, "%c", 1); | |
outtextxy(440, 400, buffer); | |
outtextxy(450, 310, buffer); | |
outtextxy(460, 220, buffer); | |
outtextxy(470, 130, buffer); | |
outtextxy(480, 40, buffer); | |
size = imagesize(470, 30, 530, 90); //k | |
size1 = imagesize(460, 120, 520, 180); //l | |
size2 = imagesize(450, 210, 510, 270); //e | |
size3 = imagesize(440, 300, 500, 360); //f | |
size4 = imagesize(430, 390, 490, 450); | |
/* allocate memory to hold the image */ | |
pball = malloc(size); | |
pball1 = malloc(size1); | |
pball2 = malloc(size2); | |
pball3 = malloc(size3); | |
pball4 = malloc(size4); | |
/* grab the image */ | |
getimage(470, 30, 530, 90, pball); | |
getimage(460, 120, 520, 180, pball1); | |
getimage(450, 210, 510, 270, pball2); | |
getimage(440, 300, 500, 360, pball3); | |
getimage(430, 390, 490, 450, pball4); | |
putimage(470, 30, pball, XOR_PUT); | |
putimage(460, 120, pball1, XOR_PUT); | |
putimage(450, 210, pball2, XOR_PUT); | |
putimage(440, 300, pball3, XOR_PUT); | |
putimage(430, 390, pball4, XOR_PUT); | |
} | |
void getkey() | |
{ | |
i.h.ah = 0x00; | |
int86(0x16, &i, &o); | |
ascii = o.h.al; | |
scan = o.h.ah; | |
} | |
void rules() | |
{ | |
char buffer[80]; | |
cleardevice(); | |
setbkcolor(0); | |
setcolor(4); | |
setlinestyle(0, 1, 3); | |
rectangle(0, 0, 640, 480); | |
setfillstyle(1, 11); | |
bar(3, 3, 637, 477); | |
setcolor(1); | |
settextstyle(10, 0, 3); | |
outtextxy(245, 0, "ARCHERY"); | |
setcolor(8); | |
settextstyle(4, 0, 3); | |
outtextxy(15, 60, "Rules To Be Followed : "); | |
settextstyle(0, 0, 0); | |
outtextxy(15, 85, "_______________________________"); | |
outtextxy(60, 120, " Rule # 1 ð> Only One Player Can Play The Game At A Time."); | |
outtextxy(60, 150, " Rule # 2 ð> There Are Three Levels Of The game."); | |
outtextxy(60, 180, " Rule # 3 ð> Arrow Shooter Is Positioned By The "); | |
sprintf(buffer, " UP(%c) AND DOWN(%c) KEY.", 24, 25); | |
outtextxy(444, 180, buffer); | |
outtextxy(60, 210, " Rule # 4 ð> Only One Arrow Can Be Shooted At A Time."); | |
outtextxy(60, 240, " Rule # 5 ð> SpaceBar Is Used To Shoot The Arrow."); | |
outtextxy(60, 270, " Rule # 6 ð> Enter Key Is Used To Select any Option."); | |
outtextxy(60, 300, " Rule # 7 ð> Five(5) Points Is Rewarded To Each Hit One Makes."); | |
outtextxy(60, 330, " Rule # 8 ð> One Can Go To Another Level ,Crossing The Previous Level."); | |
outtextxy(60, 360, " Rule # 9 ð> Esc Key From The Main Will Terminate The Game."); | |
outtextxy(60, 390, " Rule # 10 ð> Exit Option Will Terminate The Game."); | |
outtextxy(340, 465, "Press Any Key To Resume The game...."); | |
getch(); | |
cleardevice(); | |
} | |
void level() | |
{ | |
char buffer[80]; | |
cleardevice(); | |
setbkcolor(0); | |
setcolor(4); | |
setlinestyle(0, 1, 3); | |
rectangle(0, 0, 640, 480); | |
setfillstyle(1, 14); | |
bar(3, 3, 637, 477); | |
setcolor(4); | |
settextstyle(10, 0, 3); | |
outtextxy(245, 0, "ARCHERY"); | |
setcolor(8); | |
settextstyle(4, 0, 3); | |
outtextxy(15, 45, "Different Levels Of The Game : "); | |
settextstyle(0, 0, 1); | |
outtextxy(15, 70, "_________________________________________"); | |
outtextxy(50, 100, "LEVEL # 1 ð> Four balloons will be moving vertically and the player has"); | |
outtextxy(55, 118, " to shoot the balloon. Each hit is rewarded by 5 points.Once"); | |
outtextxy(55, 136, " the score becomes 100,The player moves to another Level.The"); | |
outtextxy(55, 154, " player cannot skip or jump any level."); | |
outtextxy(50, 184, "LEVEL # 2 ð> Five monsters will be moving horizontally,the player has"); | |
outtextxy(55, 202, " to shoot the ball. Each hit is rewarded by 10 points. Once"); | |
outtextxy(55, 220, " the score becomes 200 , The player moves to another level."); | |
outtextxy(55, 238, " If The Ball Touches The Shooter,particular game ends then"); | |
outtextxy(55, 256, " and there."); | |
outtextxy(50, 286, "LEVEL # 3 ð> One Eye will be Enclosed in convex object moving vertically"); | |
outtextxy(55, 302, " the player has to target and shoot the eye. The hit which is "); | |
outtextxy(55, 320, " closest to the eye will be rewarded accordingly. Once the "); | |
outtextxy(55, 338, " player hits the eye exactly, the player is awarded with 500 "); | |
outtextxy(55, 356, " points. Only ten arrows are provided for this level. If the "); | |
outtextxy(55, 374, " player succeeds ,the game comes to an end, else the player's "); | |
outtextxy(55, 392, " game comes to an end."); | |
outtextxy(340, 431, "Press any key to resume the game......."); | |
getch(); | |
cleardevice(); | |
} | |
void updatehighscore() | |
{ | |
FILE *p; | |
int i = 0, t; | |
struct scorechart s; | |
clearviewport(); | |
setcolor(2); | |
setcolor(2); | |
setlinestyle(0, 1, 3); | |
rectangle(0, 0, 550, 478); | |
setlinestyle(0, 1, 3); | |
ellipse(280, 80, 0, 320, 133, 50); | |
setcolor(9); | |
setfillstyle(1, 9); | |
fillellipse(280, 80, 133, 50); | |
setcolor(14); | |
settextstyle(1, 0, 6); | |
outtextxy(160, 40, "ARCHERY"); | |
settextstyle(1, 0, 1); | |
outtextxy(230, 170, "SCORE CARD"); | |
setcolor(14); | |
settextstyle(1, 0, 1); | |
outtextxy(120, 235, "Enter Your Name : "); | |
for (i = 0; i <= 13; i++) { | |
setcolor(i); | |
settextstyle(1, 0, 1); | |
outtextxy(250, 440, "CONGRATULATIONS!!!!!!!"); | |
delay(100); | |
if (i >= 13) | |
i = 0; | |
if (kbhit()) | |
break; | |
} | |
gotoxy(42, 16); | |
scanf("%s", s.player); | |
s.scor = score; | |
for (i = 0; i < 5; i++) { | |
if (s.scor > s1[i].scor) { | |
t = i; | |
break; | |
} | |
} | |
for (i = 4; i > t; i--) { | |
strcpy(s1[i].player, s1[i - 1].player); | |
s1[i].scor = s1[i - 1].scor; | |
} | |
strcpy(s1[t].player, s.player); | |
s1[t].scor = s.scor; | |
setcolor(14); | |
outtextxy(250, 320, "Press Any Key"); | |
getch(); | |
} | |
void writehighscorestodisk() | |
{ | |
int i; | |
FILE *p; | |
p = fopen("ARCHERY.TXT", "w"); | |
for (i = 0; i < 5; i++) | |
fprintf(p, "%st%dn", s1[i].player, s1[i].scor); | |
fclose(p); | |
return; | |
} | |
//main begins | |
void main() | |
{ | |
int mid; | |
static int c = 1; | |
char name[30]; | |
int gdriver = DETECT, gmode, errorcode; | |
count = 0; | |
score = 0; | |
initgraph(&gdriver, &gmode, "c:\TurboC3\BGI"); | |
errorcode = graphresult(); | |
if (errorcode != grOk) { | |
printf("Graphics error: %sn", grapherrormsg(errorcode)); | |
printf("Press any key to halt:"); | |
getch(); | |
exit(1); /* terminate with an error code */ | |
} | |
hand(); | |
image(); | |
image1(); | |
conveximage(); | |
cleardevice(); | |
man: | |
while (1) { | |
cleardevice(); | |
setcolor(WHITE); | |
c = 1; | |
setbkcolor(2); | |
setlinestyle(2, 1, 3); | |
rectangle(4, 4, 635, 475); | |
setlinestyle(0, 1, 3); | |
rectangle(0, 0, 640, 480); | |
setlinestyle(0, 1, 3); | |
ellipse(320, 80, 0, 360, 133, 50); | |
setcolor(9); | |
setfillstyle(1, 9); | |
fillellipse(320, 80, 133, 50); | |
setcolor(14); | |
settextstyle(4, 0, 6); | |
outtextxy(190, 40, "ARChERY"); | |
line(322, 58, 322, 73); | |
settextstyle(0, 0, 3); | |
putimage(130, 175, handimage, OR_PUT); | |
setcolor(4); | |
outtextxy(180, 180, "PLAY THE GAME...."); | |
setcolor(14); | |
outtextxy(180, 230, "INSTRUCTIONS...."); | |
outtextxy(180, 280, "HIGH SCORES...."); | |
outtextxy(180, 330, "LEVELS...."); | |
outtextxy(180, 380, "EXIT...."); | |
gethighscores(); | |
getkey(); | |
if (ascii == 27) //esc | |
exit(0); | |
if (ascii == 13) | |
game(); | |
else if (((scan == 80) || (scan == 72)) && (c == 1)) { | |
b:setcolor(14); | |
setfillstyle(0, 2); | |
bar(120, 160, 173, 430); | |
putimage(130, 175, handimage, OR_PUT); | |
settextstyle(0, 0, 3); | |
outtextxy(180, 230, "INSTRUCTIONS...."); | |
outtextxy(180, 280, "HIGH SCORES...."); | |
outtextxy(180, 330, "LEVELS...."); | |
outtextxy(180, 380, "EXIT...."); | |
setcolor(4); | |
outtextxy(180, 180, "PLAY THE GAME...."); | |
c++; | |
score = 0; | |
getkey(); | |
if (ascii == 13) { | |
game(), score = 0; | |
goto man; | |
} | |
if (scan == 72) { | |
c = 5; | |
goto g; | |
} else if ((scan == 80) && (c == 2)) { | |
d:setcolor(14); | |
setfillstyle(0, 2); | |
bar(120, 160, 173, 430); | |
putimage(130, 225, handimage, OR_PUT); | |
settextstyle(0, 0, 3); | |
outtextxy(180, 180, "PLAY THE GAME...."); | |
outtextxy(180, 280, "HIGH SCORES...."); | |
outtextxy(180, 330, "LEVELS...."); | |
outtextxy(180, 380, "EXIT...."); | |
setcolor(4); | |
outtextxy(180, 230, "INSTRUCTIONS...."); | |
c++; | |
getkey(); | |
if (ascii == 13) | |
rules(); | |
else if (scan == 72) { | |
c -= 2; | |
goto b; | |
} | |
if ((scan == 80) && (c == 3)) { | |
e:setcolor(14); | |
setfillstyle(0, 2); | |
bar(120, 160, 173, 430); | |
putimage(130, 275, handimage, OR_PUT); | |
settextstyle(0, 0, 3); | |
outtextxy(180, 180, "PLAY THE GAME...."); | |
outtextxy(180, 230, "INSTRUCTIONS...."); | |
outtextxy(180, 330, "LEVELS...."); | |
outtextxy(180, 380, "EXIT...."); | |
setcolor(4); | |
outtextxy(180, 280, "HIGH SCORES...."); | |
c++; | |
getkey(); | |
if (ascii == 13) | |
displaytopscore(); | |
if (scan == 72) { | |
c -= 2; | |
goto d; | |
} | |
if ((scan == 80) && (c == 4)) { | |
f:setcolor(14); | |
setfillstyle(0, 2); | |
bar(120, 160, 173, 430); | |
putimage(130, 325, handimage, OR_PUT); | |
settextstyle(0, 0, 3); | |
outtextxy(180, 180, "PLAY THE GAME...."); | |
outtextxy(180, 230, "INSTRUCTIONS...."); | |
outtextxy(180, 280, "HIGH SCORES...."); | |
outtextxy(180, 380, "EXIT...."); | |
setcolor(4); | |
outtextxy(180, 330, "LEVELS...."); | |
c++; | |
getkey(); | |
if (ascii == 13) | |
level(); | |
else if (scan == 72) { | |
c -= 2; | |
goto e; | |
} else if ((scan == 80) && (c == 5)) { | |
g:setcolor(14); | |
setfillstyle(0, 2); | |
bar(120, 160, 173, 430); | |
putimage(130, 375, handimage, OR_PUT); | |
settextstyle(0, 0, 3); | |
outtextxy(180, 180, "PLAY THE GAME...."); | |
outtextxy(180, 230, "INSTRUCTIONS...."); | |
outtextxy(180, 280, "HIGH SCORES...."); | |
outtextxy(180, 330, "LEVELS...."); | |
setcolor(4); | |
outtextxy(180, 380, "EXIT...."); | |
c++; | |
getkey(); | |
if (ascii == 13) | |
break; | |
else if (scan == 72) { | |
c -= 2; | |
goto f; | |
} else if ((scan == 80)) { | |
c = 1; | |
goto b; | |
} | |
} //g if close | |
} //f if | |
} //e if | |
} // d elseif | |
} //b if | |
} //while | |
} // main | |
void displaytopscore() | |
{ | |
FILE *p; | |
int i; | |
char str[100]; | |
p = fopen("ARCHERY.TXT", "r"); | |
if (p == NULL) { | |
for (i = 0; i < 5; i++) { | |
strcpy(s1[i].player, "Unknown"); | |
s1[i].scor = 0; | |
} | |
} else { | |
for (i = 0; i < 5; i++) | |
if (fscanf(p, "%st%d", s1[i].player, &s1[i].scor) == EOF) | |
fclose(p); | |
} | |
fclose(p); | |
cleardevice(); | |
setlinestyle(0, 1, 3); | |
rectangle(0, 0, 638, 478); | |
setlinestyle(0, 1, 3); | |
ellipse(320, 80, 0, 360, 133, 50); | |
setcolor(9); | |
setfillstyle(1, 9); | |
fillellipse(320, 80, 133, 50); | |
setcolor(14); | |
settextstyle(1, 0, 6); | |
outtextxy(200, 40, "ARCHERY"); | |
settextstyle(1, 0, 1); | |
setcolor(RED); | |
outtextxy(240, 160, "HIGH SCORES"); | |
setcolor(GREEN); | |
settextstyle(1, 0, 1); | |
for (i = 0; i < 5; i++) { | |
sprintf(str, "%7d --- %10s", s1[i].scor, s1[i].player); | |
setcolor(4); | |
outtextxy(170, 200 + (i * 20), str); | |
} | |
setcolor(RED); | |
outtextxy(230, 350, "Press ENTER Key"); | |
getch(); | |
// while(i!='r') | |
clearviewport(); | |
} //end displaytopscore | |
void gethighscores() | |
{ | |
FILE *p; | |
int i; | |
char str[100]; | |
p = fopen("ARCHERY.TXT", "r"); | |
if (p == NULL) { | |
for (i = 0; i < 5; i++) { | |
strcpy(s1[i].player, "Unknown"); | |
s1[i].scor = 0; | |
} | |
} else { | |
for (i = 0; i < 5; i++) | |
if (fscanf(p, "%st%dn", s1[i].player, &s1[i].scor) == EOF) | |
fclose(p); | |
} | |
fclose(p); | |
} //end gethighscore | |
void game() | |
{ | |
level1 = 1; | |
count = 25; | |
score = 0; | |
life = 1; | |
m1 = 1, m2 = 1, m3 = 1, m4 = 1, m5 = 1; | |
cleardevice(); | |
setcolor(2); | |
setlinestyle(0, 1, 3); | |
rectangle(0, 0, 550, 478); | |
setbkcolor(0); | |
setcolor(9); | |
settextstyle(0, 0, 2); | |
outtextxy(555, 250, "ARROWS"); | |
outtextxy(555, 50, "SCORE "); | |
outtextxy(555, 150, "LEVEL"); | |
setcolor(WHITE); | |
settextstyle(1, 0, 1); | |
itoa(score, buff, 5); | |
outtextxy(585, 95, buff); | |
sprintf(buff, "%d", count); | |
outtextxy(585, 275, buff); | |
itoa(level1, buffer, 5); | |
setcolor(WHITE); | |
outtextxy(585, 175, buffer); | |
setlinestyle(0, 1, 3); | |
setcolor(4); | |
rectangle(left, top - 10, right, bottom + 10); | |
while ((1) && (count != 0)) { | |
if (score == 100) { | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
sprintf(buff, "%d", level1); | |
outtextxy(585, 175, buff); | |
sprintf(buff, "%d", count); | |
outtextxy(585, 275, buff); | |
score += 25; | |
setfillstyle(1, 0); | |
bar(0, 0, 550, 480); | |
level1++, count = 25; | |
setcolor(2); | |
setlinestyle(0, 1, 3); | |
rectangle(0, 0, 550, 478); | |
settextstyle(1, 0, 1); | |
setcolor(WHITE); | |
sprintf(buff, "%d", count); | |
outtextxy(585, 275, buff); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
sprintf(buff, "%d", level1); | |
outtextxy(585, 175, buff); | |
settextstyle(1, 0, 4); | |
for (int color = 1; color <= 14; color++) { | |
setcolor(color); | |
outtextxy(200, 200, "LEVEL 2"); | |
delay(200); | |
} | |
setfillstyle(1, 0); | |
bar(200, 100, 400, 300); | |
} | |
if (level1 == 1) | |
ball(); | |
if (level1 == 2 && score < 200) | |
balllevel2(); | |
if (score == 200) { | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
sprintf(buff, "%d", level1); | |
outtextxy(585, 175, buff); | |
sprintf(buff, "%d", count); | |
outtextxy(585, 275, buff); | |
score += 25; | |
setfillstyle(1, 0); | |
bar(0, 0, 550, 480); | |
level1++, count = 25; | |
setcolor(2); | |
setlinestyle(0, 1, 3); | |
rectangle(0, 0, 550, 478); | |
settextstyle(1, 0, 1); | |
setcolor(WHITE); | |
sprintf(buff, "%d", count); | |
outtextxy(585, 275, buff); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
sprintf(buff, "%d", level1); | |
outtextxy(585, 175, buff); | |
settextstyle(1, 0, 4); | |
for (int color = 1; color <= 14; color++) { | |
setcolor(color); | |
outtextxy(200, 200, "LEVEL 3"); | |
delay(200); | |
} | |
setfillstyle(1, 0); | |
bar(200, 100, 400, 300); | |
} | |
if (level1 == 3 && score >= 225 && life == 1) | |
eyelevel(); | |
if (life == 0) | |
count = 0; | |
if (gover == 1) | |
count = 0; | |
if (kbhit()) { | |
getkey(); | |
if (ascii == 27) | |
break; | |
if (scan == 57) { | |
mid = (top + bottom) / 2; | |
hit = 1; | |
} else if ((scan == 72) && (z1 >= 510)) | |
arrow(1); | |
else if ((scan == 80) && (z1 >= 510)) | |
arrow(0); | |
} | |
if (hit == 1) | |
shoot(mid); | |
} //while | |
if (score < 100) | |
gover = 1; | |
if (score < 500) | |
gover = 1; | |
if (gover == 1) { | |
setcolor(1); | |
settextstyle(4, 0, 8); | |
outtextxy(50, 180, "GAME OVER"); | |
for (int c = 1, j = 10; j <= 32000; j++) { | |
putpixel(random(j), random(j), 8); | |
if (j == 32000) { | |
j = 0; | |
c++; | |
} | |
if (c >= 50) | |
break; | |
} | |
gover = 0; | |
} | |
if (score > s1[4].scor) | |
updatehighscore(); | |
else | |
clearviewport(); | |
writehighscorestodisk(); | |
// setcolor(4); | |
// rectangle(left,top-10,right,bottom+10); | |
cleardevice(); | |
} //end function | |
void arrow(int pos) | |
{ | |
int s; | |
//erase | |
setfillstyle(SOLID_FILL, 0); | |
bar(left - 5, top - 15, right + 5, bottom + 15); | |
if (pos == 1) //up | |
{ | |
if (top == 60) | |
top = 60; | |
else { | |
top -= 15; | |
bottom -= 15; | |
} | |
} else { | |
if (top == 420) | |
top = 420; | |
else { | |
top += 15; | |
bottom += 15; | |
} | |
} | |
//draw arrow | |
setlinestyle(0, 1, 3); | |
setcolor(4); | |
rectangle(left, top - 10, right, bottom + 10); | |
setlinestyle(0, 1, 1); | |
} | |
int shoot(int mid) | |
{ | |
static int z = 90, delay_shoot = 1; | |
delay_shoot++; | |
static int soundon = 0; | |
if (delay_shoot > 200 && z < 510) { | |
delay_shoot = 0; | |
soundon = 1; | |
setcolor(0); | |
if (soundon) { | |
for (int Si = 5; Si < 10; Si++) { | |
sound(300 * Si); | |
delay(1); | |
nosound(); | |
}} | |
settextstyle(1, 0, 1); | |
outtextxy(z - 30, mid, ">--->"); | |
setcolor(RED); | |
outtextxy(z, mid, ">--->"); | |
z += 30; | |
z1 = z; | |
if (level1 == 1) { | |
if ((z >= 480) && (z <= 500) && (mid >= m - 19) && (mid <= m + 19)) { | |
settextstyle(1, 0, 1); | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
score += 5; | |
setcolor(WHITE); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
check = 1; | |
} else if ((z >= 410) && (z <= 430) && (mid >= n - 19) && (mid <= n + 19)) { | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
score += 5; | |
setcolor(WHITE); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
check = 2; | |
} else if ((z >= 340) && (z <= 360) && (mid >= p - 19) && (mid <= p + 19)) { | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
score += 5; | |
setcolor(WHITE); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
check = 3; | |
} else if ((z >= 270) && (z <= 290) && (mid >= q - 19) && (mid <= q + 19)) { | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
score += 5; | |
setcolor(WHITE); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
check = 4; | |
} | |
} | |
if (level1 == 2) { | |
if ((abs(m - z) >= 0) && (abs(m - z) <= 18) && (mid == 60)) { | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
score += 5; | |
setcolor(WHITE); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
check = 1; | |
setfillstyle(1, 0); | |
bar(z - 50, 30, z + 70, 100); | |
z = 500; | |
m1++; | |
} | |
if ((abs(n - z) >= 0) && (abs(n - z) <= 17) && (mid >= 120) && (mid <= 150)) { | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
score += 5; | |
setcolor(WHITE); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
check = 2; | |
setfillstyle(1, 0); | |
bar(z - 50, 100, z + 90, 180); | |
z = 500; | |
m2++; | |
} | |
if ((abs(p - z) >= 0) && (abs(p - z) <= 18) && (mid >= 210) && (mid <= 240)) { | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
score += 5; | |
setcolor(WHITE); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
check = 3; | |
setfillstyle(1, 0); | |
bar(z - 50, 180, z + 80, 285); | |
z = 500; | |
m3++; | |
} | |
if ((abs(q - z) >= 0) && (abs(q - z) <= 19) && (mid >= 310) && (mid <= 340)) { | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
score += 5; | |
setcolor(WHITE); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
check = 4; | |
setfillstyle(1, 0); | |
bar(z - 60, 285, z + 80, 365); | |
z = 500; | |
m4++; | |
} | |
if ((abs(r - z) >= 0) && (abs(r - z) <= 19) && (mid >= 410) && (mid <= 440)) { | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
score += 5; | |
setcolor(WHITE); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
check = 5; | |
setfillstyle(1, 0); | |
bar(z - 50, 390, z + 80, 460); | |
z = 500; | |
m5++; | |
} | |
} | |
if (level1 == 3) { | |
if ((z >= 475) && (z <= 501) && (mid >= m) && (mid <= m + 35)) { | |
settextstyle(1, 0, 1); | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
score += 10; | |
setcolor(WHITE); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
check = 1; | |
} | |
if ((z >= 475) && (z <= 501) && (mid == m + 30) && (mid <= m + 36)) { | |
settextstyle(1, 0, 1); | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
score += 500; | |
setcolor(WHITE); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
setcolor(1); | |
settextstyle(4, 0, 8); | |
outtextxy(90, 180, "WINNER"); | |
for (int c1 = 1, j = 10; j <= 25000; j++) { | |
putpixel(random(j), random(j), 8); | |
if (j == 32000) { | |
j = 0; | |
c1++; | |
} | |
if (c1 >= 50) | |
break; | |
} | |
delay(1000); | |
life = 0; | |
gover = 0; | |
} | |
if ((z >= 475) && (z <= 501) && (mid >= m + 45) && (mid <= m + 65)) { | |
settextstyle(1, 0, 1); | |
setcolor(0); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
score += 10; | |
setcolor(WHITE); | |
sprintf(buff, "%d", score); | |
outtextxy(585, 95, buff); | |
check = 1; | |
} | |
} | |
if (z >= 510) { | |
setcolor(0); | |
outtextxy(z - 30, mid, ">--->"); | |
z = 90; | |
hit = 0; | |
setcolor(0); | |
sprintf(buff, "%d", count); | |
outtextxy(585, 275, buff); | |
count--; | |
setcolor(WHITE); | |
sprintf(buff, "%d", count); | |
outtextxy(585, 275, buff); | |
} | |
} //end outer if | |
return 0; | |
} //end | |
void ball() | |
{ | |
static int k = 35, delay_ball = 1, l = 45, e = 55, f = 25; | |
delay_ball++; | |
if (delay_ball > 300) { | |
delay_ball = 0; | |
//erase | |
delay(20); | |
setfillstyle(1, 0); | |
bar(470, k, 530, k + 50); | |
bar(400, l, 530, l + 50); | |
bar(330, e, 530, e + 50); | |
bar(260, f, 530, f + 50); | |
setcolor(2); | |
setlinestyle(0, 1, 3); | |
rectangle(0, 0, 550, 478); | |
if (check == 1) { | |
k = 35; | |
check = 0; | |
} | |
if (check == 2) { | |
l = 45; | |
check = 0; | |
} | |
if (check == 3) { | |
e = 55; | |
check = 0; | |
} | |
if (check == 4) { | |
f = 25; | |
check = 0; | |
} else if (k >= 420) | |
k = 35; | |
else if (l >= 420) | |
l = 45; | |
else if (e >= 420) | |
e = 55; | |
else if (f >= 420) | |
f = 25; | |
m = k + 25; | |
k += 8; | |
n = l + 25; | |
l += 6; | |
p = e + 25; | |
e += 7; | |
q = f + 25; | |
f += 9; | |
putimage(470, k, iball, OR_PUT); | |
putimage(400, l, iball1, OR_PUT); | |
putimage(330, e, iball2, OR_PUT); | |
putimage(260, f, iball3, OR_PUT); | |
} | |
} //end | |
void balllevel2() | |
{ | |
static int k = 470, l = 460, e = 450, f = 440, g = 430, delay_ball = 1; | |
delay_ball++; | |
//draw arrow | |
if ((top >= 60) && (top <= 90) && (m == 62) && (m1 <= 3)) { | |
gover = 1; | |
return; | |
} | |
if ((top >= 120) && (top <= 180) && (n == 61) && (m2 <= 3)) { | |
gover = 1; | |
return; | |
} | |
if ((top >= 210) && (top <= 270) && (p == 60) && (m3 <= 3)) { | |
gover = 1; | |
return; | |
} | |
if ((top >= 295) && (top <= 365) && (q == 60) && (m4 <= 3)) { | |
gover = 1; | |
return; | |
} | |
if ((top >= 380) && (top <= 465) && (r == 62) && (m5 <= 3)) { | |
gover = 1; | |
return; | |
} | |
if (delay_ball > 300 && k > 23 && l > 17 && e > 13 && f > 10) { | |
delay_ball = 0; | |
delay(20); | |
setfillstyle(1, 0); | |
if (m1 <= 3) | |
bar(k + 60, 30, k, 90); | |
if (m2 <= 3) | |
bar(l + 60, 120, l, 180); | |
if (m3 <= 3) | |
bar(e + 60, 210, e, 270); | |
if (m4 <= 3) | |
bar(f + 60, 300, f, 360); | |
if (m5 <= 3) | |
bar(g + 60, 390, g, 450); | |
setcolor(2); | |
setlinestyle(0, 1, 3); | |
rectangle(0, 0, 550, 478); | |
if (m1 >= 3) | |
m = 1000; | |
if (m2 >= 3) | |
n = 1000; | |
if (m3 >= 3) | |
p = 1000; | |
if (m4 >= 3) | |
q = 1000; | |
if (m5 >= 3) | |
r = 1000; | |
if (m1 <= 3) { | |
m = k, k -= 8; | |
} //k=8 | |
if (m2 <= 3) { | |
n = l, l -= 7; | |
} //l=7 | |
if (m3 <= 3) { | |
p = e, e -= 6; | |
} //e=6 | |
if (m4 <= 3) { | |
q = f, f -= 5; | |
} //f=5 | |
if (m5 <= 3) { | |
r = g; | |
g -= 4; | |
} //g=4 | |
if (check == 1) { | |
k = 470; | |
check = 0; | |
} | |
if (check == 2) { | |
l = 460; | |
check = 0; | |
} | |
if (check == 3) { | |
e = 450; | |
check = 0; | |
} | |
if (check == 4) { | |
f = 440; | |
check = 0; | |
} | |
if (check == 5) { | |
g = 430; | |
check = 0; | |
} | |
if (k <= 23) | |
k = 470; | |
if (l <= 17) | |
l = 460; | |
if (e <= 13) | |
e = 450; | |
if (f <= 10) | |
f = 440; | |
if (g <= 10) | |
g = 430; | |
// plot new image | |
if (m1 <= 3) | |
putimage(k, 30, pball, OR_PUT); | |
if (m2 <= 3) | |
putimage(l, 120, pball1, OR_PUT); | |
if (m3 <= 3) | |
putimage(e, 210, pball2, OR_PUT); | |
if (m4 <= 3) | |
putimage(f, 300, pball3, OR_PUT); | |
if (m5 <= 3) | |
putimage(g, 390, pball4, OR_PUT); | |
} | |
} //end | |
void eyelevel() | |
{ | |
static int e1 = 15, delay_eye = 1; | |
delay_eye++; | |
static int up = 1; | |
if (delay_eye > 300 && e1 < 405 && life != 0) { | |
delay_eye = 0; | |
delay(20); | |
setfillstyle(1, 0); | |
bar(480, e1, 520, e1 + 80); | |
setcolor(2); | |
setlinestyle(0, 1, 3); | |
rectangle(0, 0, 550, 478); | |
m = e1; | |
if (up) | |
e1 += 5; | |
if (up == 0) | |
e1 -= 5; | |
if (check == 1) | |
check = 0; | |
if (e1 >= 405) { | |
e1 = 400; | |
up = 0; | |
} | |
if (e1 <= 15) { | |
e1 = 15; | |
up = 1; | |
} | |
putimage(480, e1, peye, OR_PUT); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment