Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <Windows.h>
- void space(){
- for (int i=0; i<25; i++){
- printf("\n");
- }
- }
- int mainMenu(){
- char menu;
- do{
- space();
- printf("Find The Way\n");
- printf("============\n\n\n");
- printf("Menu\n");
- printf("====\n");
- printf("1. New Game\n");
- printf("2. Continue Saved Game\n");
- printf("3. Exit\n");
- printf("-> ");
- scanf ("%c", &menu); fflush(stdin);
- }while (menu!='1' && menu!='2'&&menu!='3');
- return menu;
- }
- void directions(){
- printf("1. Up\n");
- printf("2. Down\n");
- printf("3. Left\n");
- printf("4. Right\n");
- printf("5. Save And Exit\n");
- printf("-> ");
- }
- void viewMap(int &rP, int &cP, int &rF, int &cF, char map[15][15]){
- for (int r=0; r<10; r++){
- for (int c=0; c<10; c++){
- if(map[r][c]=='1'){
- printf("%c",1);
- rP= r; cP =c;
- }
- else if (map[r][c]=='2'){
- printf("%c",2);
- rF = r; cF =c;
- }
- else printf("%c", map[r][c]);
- }
- printf("\n");
- }
- }
- void viewMap2(int &rP, int &cP, int &rF, int &cF, char map[15][15]){
- for (int r=0; r<10; r++){
- for (int c=0; c<10; c++){
- if(map[r][c]=='1'){
- if (r == rP && c == cP) printf("%c",1);
- else printf("%c",32);
- }
- else if (map[r][c]=='2'){
- printf("%c",2);
- rF = r; cF =c;
- }
- else printf("%c", map[r][c]);
- }
- printf("\n");
- }
- }
- int readMap(int lvl,char map[15][15]){
- int n=0, flag=0;
- FILE *fp;
- if (lvl==1) {fp = fopen("map1","r");}
- else if (lvl == 2) {fp = fopen("map2","r");}
- else if (lvl == 3) {fp = fopen("map3","r");}
- if (fp == NULL){
- flag=0;
- }
- else{
- flag=1;
- while (!feof(fp)){
- fscanf(fp, "%[^\n]\n", &map[n]);
- n++;
- }
- }
- return flag;
- }
- void printKet (int hs, int level, int score, int turn){
- printf("High Score : %d\n", hs);
- printf("Level : %d\n", level);
- printf("Score : %d\n", score);
- printf("Turn : %d\n", turn);
- }
- void save(int level, int turn, int score, int rP, int cP, int hs){
- FILE *fp;
- fp = fopen ("save","w");
- fprintf(fp, "%d %d %d %d %d %d", level, turn, score, rP, cP, hs);
- fclose(fp);
- }
- int moveV(int movement,int &rP, int &cP, int rF, int cF, int &level, int &score, int &turn, int &hs,char map[15][15]){
- int done=0;
- int a=0;
- if (movement==1) a=-1;
- else if (movement ==2) a=1;
- while (map[rP+a][cP]!='#'){
- map[rP][cP] =' ';
- map[rP+a][cP] = '1';
- if (rP = rF-a && cP==cF){
- level++;
- score = score+((20-turn)*1000);
- turn =0; rP=0;cP=0;
- if (level<4){
- printf("LEVEL UP. Score = %d\n", score);
- getchar();
- }
- else if (level==4){
- printf("CONGRATS YOU HAVE CLEARED ALL THE LEVELS!\n");
- if (hs<score) hs = score;
- rP=-1; cP=-1;
- save(level,turn, score,rP,cP,hs);
- done = 1;
- getchar();
- }
- break;
- }
- rP--;
- viewMap(rP, cP, rF, cF, map);
- Sleep(500);
- }
- turn++;
- return done;
- }
- int moveH(int movement,int &rP, int &cP, int rF, int cF, int &level, int &score, int &turn, int &hs,char map[15][15]){
- int done=0;
- int a=0;
- if (movement==3) a=-1;
- else if (movement ==4) a=1;
- while (map[rP][cP+a]!='#'){
- map[rP][cP] =' ';
- map[rP][cP+a] = '1';
- if (rP = rF && cP==cF-a){
- level++;
- score = score+((20-turn)*1000);
- turn =0; rP=0;cP=0;
- if (level<4){
- printf("LEVEL UP. Score = %d\n", score);
- getchar();
- }
- else if (level==4){
- printf("CONGRATS YOU HAVE CLEARED ALL THE LEVELS!\n");
- if (hs<score) hs = score;
- rP=-1; cP=-1;
- save(level,turn, score,rP,cP,hs);
- done = 1;
- getchar();
- }
- break;
- }
- rP--;
- viewMap(rP, cP, rF, cF, map);
- Sleep(500);
- }
- turn++;
- return done;
- }
- //void down(int &rP, int &cP, int rF, int cF,int &level, int &score, int &turn,char map[15][15]){
- //
- // while (map[rP+1][cP]!='#'){
- // map[rP][cP] =' ';
- // map[rP+1][cP] = '1';
- // if (rP = rF-1 && cP==cF){
- // level++;
- // score = score+((20-turn)*1000);
- // turn =0; rP=0;cP=0;
- // break;
- // }
- // rP++;
- // turn++;
- // viewMap(rP, cP, rF, cF, map);
- // Sleep(500);
- // }
- //}
- //
- //void left(int &rP, int &cP, int rF, int cF,int &level, int &score, int &turn,char map[15][15]){
- //
- // while (map[rP][cP-1]!='#') {
- // map[rP][cP] =' ';
- // map[rP][cP-1] = '1';
- // if (cP = cF+1 && rP==rF){
- // level++;
- // score = score+((20-turn)*1000);
- // turn =0; rP=0;cP=0;
- // break;
- // }
- // cP--;
- // turn++;
- // viewMap(rP, cP, rF, cF, map);
- // Sleep(500);
- // }
- //}
- //
- //void right(int &rP, int &cP, int rF, int cF,int &level, int &score, int &turn,char map[15][15]){
- // while (map[rP][cP+1]!='#'){
- // map[rP][cP] =' ';
- // map[rP][cP+1] = '1';
- // if (cP = cF-1 && rP==rF){
- // level++;
- // score = score+((20-turn)*1000);
- // turn =0; rP=0;cP=0;
- // break;
- // }
- // cP++;
- // turn++;
- // viewMap(rP, cP, rF, cF, map);
- // Sleep(500);
- // }
- //}
- void menu1(char map[15][15]){
- int flag=0,n=0, done =0;
- int hs=0,level=1, score =0, turn=0;
- int rP=0, cP=0, rF=0, cF=0;
- char dir;
- flag = readMap(level,map);
- if (flag ==0) printf("NO FILE FOUND!");
- else{
- do{
- space();
- do{
- printKet(hs,level,score,turn);
- viewMap(rP, cP, rF, cF, map);
- directions();
- scanf ("%c", &dir); fflush(stdin);
- }while (dir!='1' && dir!='2' && dir!='3' && dir!='4' && dir!='5');
- if (dir=='1'){
- done = moveV (1,rP, cP, rF, cF,level,score,turn,hs, map);
- }
- else if (dir == '2'){
- //down (rP, cP, rF, cF, level,score,turn,map);
- done = moveV (2,rP, cP, rF, cF,level,score,turn,hs, map);
- }
- else if (dir == '3'){
- //left (rP, cP, rF, cF, level,score,turn,map);
- done = moveH (3,rP, cP, rF, cF,level,score,turn,hs, map);
- }
- else if (dir == '4'){
- done = moveH (4,rP, cP, rF, cF, level,score,turn,hs,map);
- }
- else if (dir =='5'){
- save (level, turn, score, rP, cP, hs);
- }
- //if (level<4){
- // printf("LEVEL UP. Score = %d\n", score);
- // getchar();
- // flag = readMap(level, map);
- //}
- //else if (level==4){
- // printf("CONGRATS YOU HAVE CLEARED ALL THE LEVELS!\n");
- // if (hs<score) hs = score;
- // rP=-1; cP=-1;
- // save(level,turn, score,rP,cP,hs);
- // done = 1;
- // getchar();
- //}
- }while (dir!='5' && done == 0);
- }
- }
- void menu2(char map[15][15]){
- FILE *fp;
- int n=0, done =0,flag =0, hs=0, level=1, score =0, turn=0, rP=0, cP=0, rF=0, cF=0;
- char dir;
- fp = fopen ("save", "r");
- if (fp == NULL){printf("NO FILE FOUND!");}
- else{
- while (!feof(fp)){
- fscanf(fp, "%d %d %d %d %d %d", &level, &turn, &score, &rP, &cP, &hs);
- n++;
- }
- flag=1;
- fclose(fp);
- flag = readMap(level, map);
- map[rP][cP]=1;
- if (flag == 0) printf("NO FILE FOUND!");
- else {
- do{
- space();
- do{
- printKet(hs,level,score,turn);
- viewMap2(rP, cP, rF, cF, map);
- directions();
- scanf ("%c", &dir); fflush(stdin);
- }while (dir!='1' && dir!='2' && dir!='3' && dir!='4' && dir!='5');
- if (dir=='1'){
- done = moveV (1,rP, cP, rF, cF,level,score,turn,hs, map);
- }
- else if (dir == '2'){
- //down (rP, cP, rF, cF, level,score,turn,map);
- done = moveV (2,rP, cP, rF, cF,level,score,turn,hs, map);
- }
- else if (dir == '3'){
- //left (rP, cP, rF, cF, level,score,turn,map);
- done = moveH (3,rP, cP, rF, cF,level,score,turn,hs,map);
- }
- else if (dir == '4'){
- done = moveH (4,rP, cP, rF, cF, level,score,turn,hs,map);
- }
- }while (dir!='5' || done == 0);
- }
- }
- }
- void main(){
- char map[15][15]={""};
- char choose = mainMenu();
- if (choose == '1'){menu1(map);}
- else if (choose =='2') {menu2(map);}
- else {
- space();
- printf("Thankyou for playing!");
- }
- getchar();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement