Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<conio.h>
- #include<graphics.h>
- #include<dos.h>
- #include<stdlib.h>
- #include<time.h>
- void MainMenu();
- void SelectMenu(int SelectFrom,int SelectTo);
- void Help();
- void Quit();
- void StartGame();
- void UpdateCross(int Direction);
- void FireRay(int TargetX,int TargetY);
- void UpdateAstroid(int OldX,int OldY);
- void DestroyAstroid(int AstroidX, int AstroidY);
- void SaveScore(char [],int);
- void DispScore();
- int PlayerScore=0;
- char PlayerName[51];
- struct Astroids
- {int X;
- int Y;
- int Existance;
- }Astroid[5];
- struct Crossair
- {int X;
- int Y;
- }Cross;
- void FireRay(int TargetX,int TargetY)
- {int i=208;
- setcolor(RED);
- setfillstyle(1,YELLOW);
- fillellipse(135,213,3,20);
- for (i=208;i<=218;i++)
- {line(135,i,TargetX,TargetY);
- }
- delay(500);
- setcolor(0);
- setfillstyle(1,0);
- setcolor(0);
- fillellipse(135,213,3,20);
- for (i=208;i<=218;i++)
- line(135,i,TargetX,TargetY);
- }
- void UpdateCross(int Direction)
- {
- setcolor(0);
- circle(Cross.X,Cross.Y,3);
- line(Cross.X,Cross.Y-5,Cross.X,Cross.Y+5);
- line(Cross.X-5,Cross.Y,Cross.X+5,Cross.Y);
- if (Direction==1)
- Cross.Y=Cross.Y-3;
- else if (Direction==2)
- Cross.X=Cross.X-3;
- else if (Direction==3)
- Cross.Y=Cross.Y+3;
- else if (Direction==4)
- Cross.X=Cross.X+3;
- setcolor(15);
- circle(Cross.X,Cross.Y,3);
- line(Cross.X,Cross.Y-5,Cross.X,Cross.Y+5);
- line(Cross.X-5,Cross.Y,Cross.X+5,Cross.Y);
- }
- void UpdateAstroid(int OldX,int OldY)
- {int i;
- delay(150-PlayerScore);
- setcolor(0);
- setfillstyle(1,0);
- floodfill(OldX,OldY,0);
- OldY=OldY-3;
- setcolor(6);
- circle(OldX,OldY,10);
- setfillstyle(1,6);
- floodfill(OldX,OldY,6);
- if (OldX>=240 && OldX<=520 && OldY<=100)
- {
- clrscr();
- cleardevice();
- settextstyle(4,0,5);
- setcolor(1);
- outtextxy(240,180,"Game Over");
- settextstyle(1,0,2);
- setcolor(4);
- outtextxy(263,240,"Your Score is");
- printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t %d",PlayerScore);
- while(!kbhit())
- {for (i=0;i<640;i++)
- {setcolor(i);
- line(50,0,50,480);
- line(60,0,60,480);
- line(70,0,70,480);
- line(590,0,590,480);
- line(580,0,580,480);
- line(570,0,570,480);
- line(0,90,640,90);
- line(0,100,640,100);
- line(0,110,640,110);
- line(0,370,640,370);
- line(0,360,640,360);
- line(0,350,640,350);
- }
- delay(30);
- for (i=0;i<640;i++)
- {setcolor(0);
- line(50,0,50,480);
- line(60,0,60,480);
- line(70,0,70,480);
- line(590,0,590,480);
- line(580,0,580,480);
- line(570,0,570,480);
- line(0,90,640,90);
- line(0,100,640,100);
- line(0,110,640,110);
- line(0,370,640,370);
- line(0,360,640,360);
- line(0,350,640,350);
- }
- }
- getch();
- clrscr();
- cleardevice();
- printf("Your Score is %d",PlayerScore);
- printf("\nEnter your name");
- scanf("%s",PlayerName);
- SaveScore(PlayerName,PlayerScore);
- MainMenu();
- }
- }
- void DestroyAstroid(int AstroidX,int AstroidY)
- {int i;
- setfillstyle(1,0);
- setcolor(0);
- circle(AstroidX,AstroidY,10);
- floodfill(AstroidX,AstroidY,0);
- for (i=0;i<100;i++)
- {
- putpixel(AstroidX-random(15),AstroidY+random(15),YELLOW);
- putpixel(AstroidX+random(15),AstroidY-random(15),YELLOW);
- putpixel(AstroidX-random(15),AstroidY+random(15),RED);
- putpixel(AstroidX+random(15),AstroidY-random(15),RED);
- putpixel(AstroidX-random(15),AstroidY-random(15),YELLOW);
- putpixel(AstroidX+random(15),AstroidY+random(15),YELLOW);
- putpixel(AstroidX-random(15),AstroidY-random(15),RED);
- putpixel(AstroidX+random(15),AstroidY+random(15),RED);
- }
- delay(100);
- setcolor(0);
- setfillstyle(1,0);
- bar(AstroidX-20,AstroidY-20,AstroidX+20,AstroidY+20);
- }
- void SelectMenu(int SelectFrom,int SelectTo)
- {
- setcolor(9);
- if (SelectFrom==1)
- {
- circle(280,172,4);
- }
- else if (SelectFrom==2)
- {
- circle(280,212,4);
- }
- else if (SelectFrom==3)
- {
- circle(280,252,4);
- }
- else if (SelectFrom==4)
- {
- circle(280,292,4);
- }
- setcolor(1);
- if (SelectTo==1)
- {
- circle(280,172,4);
- }
- else if (SelectTo==2)
- {
- circle(280,212,4);
- }
- else if (SelectTo==3)
- {
- circle(280,252,4);
- }
- else if (SelectTo==4)
- {
- circle(280,292,4);
- }
- }
- void Intro()
- {
- int Spaceship[28]={100,210,100,150,120,210,145,210,153,218,145,226,120,226,100,286,100,226,50,226,40,239,40,197,50,210,100,210};
- int i,j;
- int TopX=30,LowX=40;
- setfillstyle(1,7);
- setcolor(7);
- fillpoly(13,Spaceship);
- setcolor(YELLOW);
- setfillstyle(9,YELLOW);
- bar(30,212,40,208);
- bar(30,218,40,214);
- bar(30,224,40,220);
- bar(30,230,40,226);
- setcolor(7);
- setfillstyle(1,7);
- fillpoly(13,Spaceship);
- for (i=0;i<450;i++)
- {cleardevice();
- for (j=0;j<28;j=j+2)
- Spaceship[j]=Spaceship[j]+1;
- setcolor(7);
- setfillstyle(1,7);
- fillpoly(13,Spaceship);
- setcolor(YELLOW);
- setfillstyle(9,YELLOW);
- TopX=TopX+1;
- LowX=LowX+1;
- bar(TopX,212,LowX,208);
- bar(TopX,218,LowX,214);
- bar(TopX,224,LowX,220);
- bar(TopX,230,LowX,226);
- delay(10);
- }
- settextstyle(4,0,8);
- fillpoly(13,Spaceship);
- for (i=0;i<15;i++)
- {setcolor(7);
- setfillstyle(1,7);
- fillpoly(13,Spaceship);
- setcolor(YELLOW);
- setfillstyle(9,YELLOW);
- bar(TopX,212,LowX,208);
- bar(TopX,218,LowX,214);
- bar(TopX,224,LowX,220);
- bar(TopX,230,LowX,226);
- sound(100*i);
- setcolor(i);
- outtextxy(180,200,"Asteroid");
- outtextxy(230,270,"Hunter");
- delay(100);
- cleardevice();
- nosound();
- }
- setcolor(1);
- outtextxy(180,200,"Asteroid");
- outtextxy(240,270,"Hunter");
- setcolor(7);
- setfillstyle(1,7);
- fillpoly(13,Spaceship);
- setcolor(YELLOW);
- setfillstyle(9,YELLOW);
- bar(TopX,212,LowX,208);
- bar(TopX,218,LowX,214);
- bar(TopX,224,LowX,220);
- bar(TopX,230,LowX,226);
- delay(2000);
- settextstyle(1,0,3);
- setcolor(9);
- outtextxy(240,220,"D");
- delay(300);
- cleardevice();
- outtextxy(240,220,"De");
- delay(300);
- cleardevice();
- outtextxy(240,220,"Dev");
- delay(300);
- cleardevice();
- outtextxy(240,220,"Devel");
- delay(300);
- cleardevice();
- outtextxy(240,220,"Develop");
- delay(300);
- cleardevice();
- outtextxy(240,220,"Develope");
- delay(300);
- cleardevice();
- outtextxy(240,220,"Developed");
- delay(300);
- cleardevice();
- outtextxy(240,220,"Developed ");
- delay(300);
- cleardevice();
- outtextxy(240,220,"Developed B");
- delay(300);
- cleardevice();
- outtextxy(240,220,"Developed By");
- delay(300);
- setcolor(RED);
- outtextxy(250,245,"Tushar Relan");
- outtextxy(250,270,"Rohan Khurana");
- outtextxy(250,305,"Sridatri Dutta");
- settextstyle(1,0,1);
- setcolor(WHITE);
- outtextxy(40,450,"Press any key to continue...");
- getch();
- MainMenu();
- }
- void MainMenu()
- {int NewSelect;
- int Option=-1;
- int Select=1;
- char UserPress;
- int i;
- clrscr();
- cleardevice();
- printf("\n\n\n Use W,S to choose and Spacebar to select");
- printf("\n Asteroid Hunter v1.0\n Developers:\n Tushar Relan\n Rohan Khurana\n Sridatri Dutta");
- setcolor(13);
- rectangle(5,5,635,475);
- rectangle(13,13,627,467);
- setfillstyle(9,13);
- floodfill(6,6,13);
- setfillstyle(1,4);
- floodfill(0,0,13);
- settextstyle(1,0,1);
- setbkcolor(9);
- setcolor(1);
- outtextxy(290,160,"Start Game");
- outtextxy(290,200,"High Score");
- outtextxy(290,240,"Help");
- outtextxy(290,280,"Exit");
- circle(280,172,4);
- while(Option==-1)
- { UserPress=getch();
- if (UserPress=='w')
- { if (Select==1)
- {
- SelectMenu(1,4);
- Select=4;
- }
- else
- {
- NewSelect=Select-1;
- SelectMenu(Select,NewSelect);
- Select--;
- }
- }
- if (UserPress=='s')
- { if (Select==4)
- {
- SelectMenu(4,1);
- Select=1;
- }
- else
- { NewSelect=Select+1;
- SelectMenu(Select,NewSelect);
- Select++;
- }
- }
- if (UserPress==' ')
- {
- Option=Select;
- }
- }
- if (Option==1)
- {
- StartGame();
- }
- else if (Option==2)
- {
- DispScore();
- }
- else if (Option==3)
- {
- Help();
- }
- else if (Option==4)
- {
- Quit();
- }
- }
- void StartGame()
- {int StarX,StarY,i;
- int Africa[12]={340,0,340,25,355,40,366,7,380,0,350,0};
- int Australia[14]={420,60,435,40,450,40,455,50,440,60,425,60,420,60};
- int Spaceship[28]={100,210,100,180,110,210,127,210,132,214,127,218,110,218,100,248,100,218,85,218,75,228,75,200,85,210,100,210};
- int GameOver=0;
- clrscr();
- cleardevice();
- PlayerScore=0;
- setbkcolor(0);
- setcolor(7);
- outtextxy(280,220,"Loading...");
- setfillstyle(1,7);
- bar(265,250,375,257);
- setfillstyle(1,4);
- delay(600);
- bar(265,250,290,257);
- delay(200);
- bar(265,250,300,257);
- delay(300);
- bar(265,250,325,257);
- delay(1000);
- bar(265,250,340,257);
- delay(2000);
- bar(265,250,375,257);
- delay(1000);
- clrscr();
- cleardevice();
- setbkcolor(0);
- randomize();
- for (i=0;i<50;i++)
- {StarX=random(640);
- StarY=random(480);
- putpixel(StarX,StarY,15);
- }
- setcolor(1);
- circle(380,-60,140);
- setfillstyle(1,1);
- floodfill(390,0,1);
- setcolor(2);
- setfillstyle(1,2);
- fillpoly(6,Africa);
- fillpoly(7,Australia);
- setfillstyle(1,8);
- setcolor(8);
- fillpoly(14,Spaceship);
- setcolor(14);
- setfillstyle(1,4);
- bar(60,213,75,218);
- setfillstyle(9,14);
- bar(60,213,75,218);
- setcolor(15);
- circle(320,240,3);
- line(320,235,320,245);
- line(315,240,325,240);
- Cross.X=320;
- Cross.Y=240;
- randomize();
- Astroid[1].X=150+random(100);
- Astroid[1].Y=400;
- setcolor(6);
- circle(Astroid[1].X,Astroid[1].Y,10);
- setfillstyle(1,6);
- floodfill(Astroid[1].X,Astroid[1].Y,6);
- Astroid[1].Existance=1;
- randomize();
- Astroid[2].X=250+random(200);
- Astroid[2].Y=400;
- setcolor(6);
- circle(Astroid[2].X,Astroid[2].Y,10);
- setfillstyle(1,6);
- floodfill(Astroid[2].X,Astroid[2].Y,6);
- Astroid[2].Existance=1;
- while(GameOver==0)
- {char UserPress;
- while(Cross.Y>=100&&Cross.X>=150)
- {while(!kbhit())
- {if (Astroid[1].Existance==1)
- {
- UpdateAstroid(Astroid[1].X,Astroid[1].Y);
- Astroid[1].Y-=3;
- if (Astroid[1].Y<=140)
- { if (Astroid[1].X<=240 && Astroid[1].X>=520)
- Astroid[1].X=150+random(300);
- }
- }
- if (Astroid[2].Existance==1)
- {
- UpdateAstroid(Astroid[2].X,Astroid[2].Y);
- Astroid[2].Y-=3;
- if (Astroid[2].Y<=140)
- { if (Astroid[2].X<=240 && Astroid[2].X>=520)
- Astroid[2].X=150+random(300);
- }
- }
- }
- UserPress=getch();
- if (UserPress=='w')
- UpdateCross(1);
- else if (UserPress=='a')
- UpdateCross(2);
- else if (UserPress=='s')
- UpdateCross(3);
- else if (UserPress=='d')
- UpdateCross(4);
- else if (UserPress==' ')
- {
- FireRay(Cross.X,Cross.Y);
- if (Astroid[1].Y-Cross.Y<=10&&Astroid[1].Y-Cross.Y>=-10)
- {
- if(Astroid[1].X-Cross.X<=10&&Astroid[1].X-Cross.X>=-10)
- {
- Astroid[1].Existance=0;
- DestroyAstroid(Astroid[1].X,Astroid[1].Y);
- printf("\a");
- PlayerScore+=5;
- Astroid[1].X=150+random(300);
- Astroid[1].Y=400;
- Astroid[1].Existance=1;
- }
- }
- if (Astroid[2].Y-Cross.Y<=10&&Astroid[2].Y-Cross.Y>=-10)
- {
- if(Astroid[2].X-Cross.X<=10&&Astroid[2].X-Cross.X>=-10)
- {
- DestroyAstroid(Astroid[2].X,Astroid[2].Y);
- Astroid[2].Existance=0;
- printf("\a");
- PlayerScore+=5;
- Astroid[2].X=150+random(300);
- Astroid[2].Y=400;
- Astroid[2].Existance=1;
- }
- }
- }
- else if (UserPress=='e')
- MainMenu();
- }
- if (Cross.X<150)
- {
- setcolor(0);
- circle(Cross.X,Cross.Y,3);
- line(Cross.X,Cross.Y-5,Cross.X,Cross.Y+5);
- line(Cross.X-5,Cross.Y,Cross.X+5,Cross.Y);
- Cross.X=150;
- }
- if (Cross.Y<100)
- {
- setcolor(0);
- circle(Cross.X,Cross.Y,3);
- line(Cross.X,Cross.Y-5,Cross.X,Cross.Y+5);
- line(Cross.X-5,Cross.Y,Cross.X+5,Cross.Y);
- Cross.Y=100;
- }
- }
- getch();
- exit(0);
- }
- void Quit()
- {char UserPress;
- int Option=-1;
- int Select=1;
- clrscr();
- setbkcolor(9);
- setfillstyle(0,13);
- floodfill(6,6,1);
- line(0,100,640,100);
- line(0,370,640,370);
- setfillstyle(8,13);
- floodfill(30,30,1);
- floodfill(20,400,1);
- printf("\n\n\n\n\n\n\n\n\n\n\n\n Are you sure you want to exit?");
- printf("\n\n\n Yes, Exit\n\n No, Return to Menu");
- circle(33,247,4);
- while(Option==-1)
- {UserPress=getch();
- if (UserPress=='w')
- {if (Select==1)
- {setcolor(9);
- circle(33,247,4);
- setcolor(1);
- circle(33,270,4);
- Select=2;
- }
- else if (Select==2)
- {setcolor(9);
- circle(33,270,4);
- setcolor(1);
- circle(33,247,4);
- Select=1;
- }
- }
- else if (UserPress=='s')
- {if (Select==1)
- {setcolor(9);
- circle(33,247,4);
- setcolor(1);
- circle(33,270,4);
- Select=2;
- }
- else if (Select==2)
- {setcolor(9);
- circle(33,270,4);
- setcolor(1);
- circle(33,247,4);
- Select=1;
- }
- }
- else if (UserPress==' ');
- Option=Select;
- }
- if (Option==2)
- {
- MainMenu();
- }
- else if (Option==1)
- exit(0);
- }
- void Help()
- {clrscr();
- setbkcolor(9);
- setfillstyle(0,13);
- floodfill(6,6,1);
- line(0,100,640,100);
- line(0,362,640,362);
- setfillstyle(8,13);
- floodfill(30,30,1);
- floodfill(20,400,1);
- outtextxy(310,110,"HELP");
- /*printf("\n\n\n\n\n\n\n HELP "); */
- printf("\n\n\n\n\n\n\n\n\n Welcome To Asteroid Hunter v1.0...\n You are the captain of the Spaceship Asteroid Hunter");
- printf("\n Your Objective is to protect the earth from the incoming Asteroids");
- printf("\n The Spaceship is equipped by a H-14 Ray Gun, which locks on a target and fires an Energy Pulse");
- printf("\n Use the 'W,A,S,D' keys to move your Target Lock Crosshair");
- printf("\n On aiming over an Asteroid, press the Space Key to fire the energy pulse");
- printf("\n To exit the game, presss the 'E' Key");
- printf("\n Destroying each Asteroid gives you 5 points");
- printf("\n The game is over if an Asteroid reaches the earth");
- printf("\n You can check the 3 Highest scores in the High-Scores Option in the Main Menu");
- printf("\n Enjoy!\n Press any key to return to Main Menu...");
- getch();
- MainMenu();
- }
- void SaveScore(char PName[],int PScore)
- {
- FILE *fp;
- char Name[3][50];
- int Score[3], i, j;
- fp=fopen("SCORE.txt","r");
- i=0;
- while(!feof(fp))
- {
- fscanf(fp,"%s %d\n",Name[i],&Score[i]);
- i++;
- }
- fclose(fp);
- for (i=0;i<3;i++)
- {
- if (PScore>Score[i])
- {
- for (j=i+1;j<3;j++)
- {
- strcpy(Name[j],Name[j-1]);
- Score[j]=Score[j-1];
- }
- strcpy(Name[i],PName);
- Score[i]=PScore;
- break;
- }
- }
- fp=fopen("SCORE.txt","w");
- for (i=0;i<3;i++)
- fprintf(fp,"%s %d\n",Name[i],Score[i]);
- fclose(fp);
- }
- void DispScore()
- {
- int Score[3],i;
- char Name[3][51];
- FILE *fp;
- i=0;
- fp=fopen("SCORE.txt","r");
- clrscr();
- cleardevice();
- while(!feof(fp))
- {
- fscanf(fp,"%s %d\n",Name[i],&Score[i]);
- i++;
- }
- fclose(fp);
- for (i=0;i<3;i++)
- printf("[#%d]\t%s\t%d\n",i+1,Name[i],Score[i]);
- getch();
- MainMenu();
- }
- void main()
- {int gd=DETECT,gm;
- clrscr();
- initgraph(&gd,&gm,"C:\\TC\\BGI");
- Intro();
- MainMenu();
- }
Add Comment
Please, Sign In to add comment