Created
November 15, 2013 15:12
-
-
Save Codeplaza/7485851 to your computer and use it in GitHub Desktop.
Blokko
This file contains hidden or 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
/*############################################################################*/ | |
/* BLOCCOGAME */ | |
/*----------------------------------------------------------------------------*/ | |
/* Created on 24/09/2013 by Ali Tugrul PINAR */ | |
/*----------------------------------------------------------------------------*/ | |
/*----------------------------------------------------------------------------*/ | |
/* DESCRIPTION */ | |
/*------------------------- | |
/* This program provides a simulation of a blocco game. | |
/* Game includes five different difficulty levels. | |
/* Users can select and play according to their own appropriate Level. | |
/*----------------------------------------------------------------------------*/ | |
/*############################################################################*/ | |
/*----------------------------------------------------------------------------*/ | |
/* INCLUDES */ | |
/*----------------------------------------------------------------------------*/ | |
#include<stdio.h> | |
#include<time.h> | |
#include<conio.h> /* kbhit function */ | |
#include<windows.h> /* sleep function */ | |
/*----------------------------------------------------------------------------*/ | |
/* DEFINES */ | |
/*----------------------------------------------------------------------------*/ | |
#define CLEAR "cls" /* system clear screen */ | |
#define MAPROW 21 /* row of map */ | |
#define MAPCOL 70 /* coloumn of map */ | |
#define MAPC '#' /* blocks */ | |
#define HELI 'H' /* Helicopter :) */ | |
#define ERRORS "BlokkoGame_Errors.txt" /* information this game */ | |
#define BSTSCR "BestScore.bin" /* registered a record. */ | |
/*----------------------------------------------------------------------------*/ | |
/* STRUCTS */ | |
/*----------------------------------------------------------------------------*/ | |
typedef struct{ /* rekor saved here */ | |
char name[50];/* name */ | |
double score; /* your score */ | |
double time; /* time (seconds) */ | |
}rekor_t; | |
/*----------------------------------------------------------------------------*/ | |
/* FUNCTION PROTOTYPES */ | |
/*----------------------------------------------------------------------------*/ | |
void createMap(char mapp[MAPROW][MAPCOL], int level); | |
void printGame(char mapp[MAPROW][MAPCOL], FILE *outp); | |
void fullSpace(char mapp[MAPROW][MAPCOL]); | |
int controlUp(); | |
int goOnGame(char mapp[MAPROW][MAPCOL]); | |
int helicopter(char mapp[MAPROW][MAPCOL]); | |
double startGame(char mapp[MAPROW][MAPCOL],time_t sTime, int level, FILE* outp, | |
int speed, int createSpeed, double scoreIncrsng, rekor_t rekor); | |
/*----------------------------------------------------------------------------*/ | |
/* GLOBAL VARIABLES */ | |
/*----------------------------------------------------------------------------*/ | |
int hR=2,hC=4; /* Helicopter coordinats (X-Y) */ | |
/*----------------------------------------------------------------------------*/ | |
/* MAIN FUNCTION */ | |
/*----------------------------------------------------------------------------*/ | |
int main() | |
{ | |
/* START_OF_MAIN */ | |
char blokko[MAPROW][MAPCOL]; | |
int i=1, select, flag; | |
double score = 0.0, timeD; | |
rekor_t rekor = {"Computer",0.0,0.0}; | |
FILE *reset, *saved; | |
time_t time1, time2; | |
/* END_OF_VARIABLES */ | |
reset = fopen(ERRORS,"w"); | |
saved = fopen(BSTSCR,"r"); /* open file of best score */ | |
if( saved == NULL ) /* it has been saved ? */ | |
{ | |
saved = fopen(BSTSCR,"w"); | |
fwrite(&rekor,sizeof(rekor_t),1,saved); | |
fclose(saved); | |
saved = fopen(BSTSCR,"r"); | |
} | |
fread(&rekor,sizeof(rekor_t),1,saved); | |
fclose(saved); | |
system("color 1F"); | |
srand(time(NULL)); | |
while(i == 1) | |
{ | |
system(CLEAR); | |
printf("\n\n\t\t BLOKKO \n"); | |
printf("\n\t Best score is %4.2f - %s - | - %5.2f Seconds - \n\n",rekor.score,rekor.name,rekor.time); | |
printf("\n\n\t GAME CONTROLLER "); | |
printf("\n\n | Space key | ---> Helicopter is direct up way And continue game "); | |
printf("\n | p key | ---> Game paused\n\n"); | |
printf("\n Lets play ...! You can do highest score !!\n\n"); | |
printf("\n Please Select Level of Game and start game\n Please Enter number one of them ( 1, 2, 3, 4, 5 )\n\n \t select: "); | |
scanf("%d", &select); | |
time1 = clock(); | |
switch(select) | |
{ | |
case 1 : score = startGame(blokko,time1,1,stdout,100,15,0.45,rekor); | |
break; | |
case 2 : score = startGame(blokko,time1,2,stdout,90,12,0.95,rekor); | |
break; | |
case 3 : score = startGame(blokko,time1,3,stdout,80,13,1.45,rekor); | |
break; | |
case 4 : score = startGame(blokko,time1,4,stdout,65,14,2.05,rekor); | |
break; | |
case 5 : score = startGame(blokko,time1,5,stdout,50,20,2.75,rekor); | |
break; | |
default: fprintf(reset," \n ERROR : WRONG SELECTION ( LEVEL) IN FUNCTION Main "); | |
} | |
time2 = clock(); | |
timeD = difftime(time2,time1); | |
timeD = timeD / 1000; | |
if(score > rekor.score) | |
{ | |
system(CLEAR); | |
printf("\n Game was Finished time %5.2f seconds",timeD); | |
printf("\n\n Your Score is %4.2f \n\n Congratulations !! You have the highest score. \n\n\t Enter Your Name: ",score); | |
scanf("%s",rekor.name); | |
rekor.score = score ; | |
rekor.time = timeD; | |
saved = fopen(BSTSCR,"w"); | |
fwrite(&rekor,sizeof(rekor_t),1,saved); | |
fclose(saved); | |
} | |
else | |
{ | |
system(CLEAR); | |
printf("\n Game was Finished time %5.2f seconds",timeD); | |
printf("\n\n Your Score is %4.2f \n\n Unfortunately !! You have not passed the highest score.\n",score); | |
} | |
hR = 2; /* Helicopter was resetted */ | |
hC = 4; | |
printf("\n\n You can try again (1) OR Exit (0) !!! : "); | |
flag = scanf("%d",&i); | |
if (flag != 1) | |
{ | |
fprintf(reset," \n ERROR : WRONG Entered Value ( Stop or Continue ) IN FUNCTION Main "); | |
i=0; | |
} | |
} | |
fclose(reset); | |
return (0); | |
/* END_OF_MAIN */ | |
} | |
/*----------------------------------------------------------------------------*/ | |
/* FUNCTION IMPLEMENTATIONS */ | |
/*----------------------------------------------------------------------------*/ | |
/******************************************************************************/ | |
/* Function createMap */ | |
/* ---------------------------------------------------------------------------*/ | |
/* This function will try creating new map */ | |
/*----------------------------------------------------------------------------*/ | |
/* INPUT: Map of Game ( 2D array ) */ | |
/* INPUT: Level of Game ( integer ) */ | |
/******************************************************************************/ | |
void createMap(char mapp[MAPROW][MAPCOL], int level) | |
{ | |
int a1,i,a2; | |
FILE *errors; /* Programmme will try writing errors */ | |
errors = fopen(ERRORS,"a+"); | |
switch(level) | |
{ | |
case 1 : | |
mapp[MAPROW - 2][MAPCOL-1] = MAPC; | |
mapp[1][MAPCOL-1] = MAPC; | |
a1 = ( rand() % (MAPROW -1) ) + 1; | |
if(a1 < MAPROW -1 ) | |
{ | |
if( (a1 % 2) == 0) | |
{ | |
mapp[a1][MAPCOL-1] = MAPC ; | |
} | |
else | |
{ | |
mapp[a1][MAPCOL-1] = MAPC ; | |
mapp[a1][MAPCOL-2] = MAPC; | |
} | |
} | |
else | |
{ | |
createMap(mapp,1); | |
} | |
break; | |
case 2 : | |
a1 = ( rand()% (MAPROW -1)) + 2; | |
if(a1 < MAPROW - 1) | |
{ | |
if((a1 % 2)== 0) | |
{ | |
mapp[1][MAPCOL-1] = MAPC ; | |
mapp[1][MAPCOL-2] = MAPC ; | |
mapp[1][MAPCOL-3] = MAPC ; | |
mapp[1][MAPCOL-4] = MAPC ; | |
mapp[1][MAPCOL-5] = MAPC ; | |
mapp[2][MAPCOL-2] = MAPC ; | |
mapp[2][MAPCOL-3] = MAPC ; | |
mapp[2][MAPCOL-4] = MAPC ; | |
mapp[3][MAPCOL-3] = MAPC ; | |
mapp[MAPROW-2][MAPCOL-1] = MAPC ; | |
mapp[MAPROW-2][MAPCOL-2] = MAPC ; | |
mapp[MAPROW-2][MAPCOL-3] = MAPC ; | |
mapp[MAPROW-2][MAPCOL-4] = MAPC ; | |
mapp[MAPROW-2][MAPCOL-5] = MAPC ; | |
mapp[MAPROW-3][MAPCOL-2] = MAPC ; | |
mapp[MAPROW-3][MAPCOL-3] = MAPC ; | |
mapp[MAPROW-3][MAPCOL-4] = MAPC ; | |
mapp[MAPROW-4][MAPCOL-3] = MAPC ; | |
} | |
else | |
{ | |
mapp[a1][MAPCOL-1] = MAPC ; | |
mapp[a1 -1][MAPCOL-1] = MAPC ; | |
mapp[a1][MAPCOL-2] = MAPC ; | |
mapp[a1 -1][MAPCOL-2] = MAPC ; | |
} | |
} | |
if( (a1 % 2 )== 0 ) | |
{ | |
createMap(mapp,1); | |
} | |
break; | |
case 3 : | |
a1 = ( rand()% (MAPROW -1)) + 3; | |
if(a1 < MAPROW - 1) | |
{ | |
if((a1 % 2)== 0) | |
{ | |
mapp[a1][MAPCOL-1] = MAPC ; | |
mapp[a1 -1][MAPCOL-1] = MAPC ; | |
mapp[a1 -2][MAPCOL-1] = MAPC ; | |
mapp[a1][MAPCOL-2] = MAPC ; | |
mapp[a1 -1][MAPCOL-2] = MAPC ; | |
mapp[a1 -2][MAPCOL-2] = MAPC ; | |
} | |
else | |
{ | |
mapp[a1][MAPCOL-1] = MAPC ; | |
mapp[a1 -1][MAPCOL-1] = MAPC ; | |
mapp[a1 -2][MAPCOL-2] = MAPC ; | |
mapp[a1 -2][MAPCOL-1] = MAPC ; | |
mapp[a1 -3][MAPCOL-3] = MAPC ; | |
mapp[a1 -3][MAPCOL-2] = MAPC ; | |
mapp[a1 -3][MAPCOL-1] = MAPC ; | |
} | |
} | |
if( (a1 % 2 ) == 0 ) | |
{ | |
a2 = (a1 % 2) + 1 ; | |
createMap(mapp,a2); | |
} | |
break; | |
case 4 : | |
a1 = ( rand()% (MAPROW -1)) + 4; | |
if(a1 < MAPROW - 1) | |
{ | |
if((a1 % 2) == 0) | |
{ | |
mapp[a1][MAPCOL-1] = MAPC ; | |
mapp[a1 -1][MAPCOL-1] = MAPC ; | |
mapp[a1 -2][MAPCOL-1] = MAPC ; | |
mapp[a1 -3][MAPCOL-1] = MAPC ; | |
mapp[a1][MAPCOL-2] = MAPC ; | |
mapp[a1 -1][MAPCOL-2] = MAPC ; | |
mapp[a1 -2][MAPCOL-2] = MAPC ; | |
mapp[a1 -3][MAPCOL-2] = MAPC ; | |
} | |
else | |
{ | |
mapp[4][MAPCOL-1] = MAPC ; | |
mapp[4][MAPCOL-2] = MAPC ; | |
mapp[4][MAPCOL-3] = MAPC ; | |
mapp[4][MAPCOL-4] = MAPC ; | |
mapp[4][MAPCOL-5] = MAPC ; | |
mapp[3][MAPCOL-1] = MAPC ; | |
mapp[3][MAPCOL-2] = MAPC ; | |
mapp[3][MAPCOL-3] = MAPC ; | |
mapp[3][MAPCOL-4] = MAPC ; | |
mapp[3][MAPCOL-5] = MAPC ; | |
mapp[2][MAPCOL-1] = MAPC ; | |
mapp[2][MAPCOL-2] = MAPC ; | |
mapp[2][MAPCOL-3] = MAPC ; | |
mapp[2][MAPCOL-4] = MAPC ; | |
mapp[2][MAPCOL-5] = MAPC ; | |
mapp[1][MAPCOL-1] = MAPC ; | |
mapp[1][MAPCOL-2] = MAPC ; | |
mapp[1][MAPCOL-3] = MAPC ; | |
mapp[1][MAPCOL-4] = MAPC ; | |
mapp[1][MAPCOL-5] = MAPC ; | |
mapp[5][MAPCOL-2] = MAPC ; | |
mapp[5][MAPCOL-3] = MAPC ; | |
mapp[5][MAPCOL-4] = MAPC ; | |
mapp[6][MAPCOL-3] = MAPC ; | |
mapp[a1][MAPCOL-2] = MAPC; | |
mapp[a1][MAPCOL-3] = MAPC; | |
mapp[a1][MAPCOL-4] = MAPC; | |
mapp[a1-1][MAPCOL-2] = MAPC; | |
mapp[a1-1][MAPCOL-3] = MAPC; | |
mapp[a1-1][MAPCOL-4] = MAPC; | |
mapp[a1-2][MAPCOL-2] = MAPC; | |
mapp[a1-2][MAPCOL-3] = MAPC; | |
mapp[a1-2][MAPCOL-4] = MAPC; | |
} | |
} | |
else | |
{ | |
mapp[6 ][MAPCOL-1] = MAPC; | |
mapp[6 ][MAPCOL-2] = MAPC; | |
mapp[6 ][MAPCOL-3] = MAPC; | |
mapp[6 ][MAPCOL-4] = ' ' ; | |
mapp[6 ][MAPCOL-5] = MAPC; | |
mapp[6 ][MAPCOL-6] = MAPC; | |
mapp[6 ][MAPCOL-7] = MAPC; | |
mapp[6 ][MAPCOL-8] = ' ' ; | |
mapp[6 ][MAPCOL-9] = MAPC; | |
mapp[6 ][MAPCOL-10] = ' '; | |
mapp[6 ][MAPCOL-11] = ' ' ; | |
mapp[6 ][MAPCOL-12] = ' ' ; | |
/* --*/ | |
mapp[7 ][MAPCOL-1] = MAPC; | |
mapp[7 ][MAPCOL-2] = ' '; | |
mapp[7 ][MAPCOL-3] = MAPC; | |
mapp[7 ][MAPCOL-4] = ' '; | |
mapp[7 ][MAPCOL-5] = ' ' ; | |
mapp[7 ][MAPCOL-6] = MAPC ; | |
mapp[7 ][MAPCOL-7] = ' ' ; | |
mapp[7 ][MAPCOL-8] = MAPC ; | |
mapp[7 ][MAPCOL-9] = ' ' ; | |
mapp[7][MAPCOL-10] = MAPC ; | |
mapp[7 ][MAPCOL-11] = ' ' ; | |
mapp[7 ][MAPCOL-12] = ' ' ; | |
/* --*/ | |
mapp[8 ][MAPCOL-1] = MAPC; | |
mapp[8 ][MAPCOL-2] = MAPC; | |
mapp[8 ][MAPCOL-3] = MAPC ; | |
mapp[8 ][MAPCOL-4] = ' ' ; | |
mapp[8 ][MAPCOL-5] = ' ' ; | |
mapp[8 ][MAPCOL-6] = MAPC ; | |
mapp[8 ][MAPCOL-7] = ' ' ; | |
mapp[8 ][MAPCOL-8] = MAPC; | |
mapp[8 ][MAPCOL-9] = MAPC; | |
mapp[8 ][MAPCOL-10] = MAPC ; | |
mapp[8 ][MAPCOL-11] = ' ' ; | |
mapp[8 ][MAPCOL-12] = ' ' ; | |
/* --*/ | |
mapp[9 ][MAPCOL-1] = ' '; | |
mapp[9][MAPCOL-2] = ' '; | |
mapp[9 ][MAPCOL-3] = MAPC; | |
mapp[9 ][MAPCOL-4] = ' ' ; | |
mapp[9 ][MAPCOL-5] = ' '; | |
mapp[9 ][MAPCOL-6] = MAPC; | |
mapp[9 ][MAPCOL-7] = ' '; | |
mapp[9][MAPCOL-8] = MAPC; | |
mapp[9 ][MAPCOL-9] = ' '; | |
mapp[9][MAPCOL-10] = MAPC; | |
mapp[9 ][MAPCOL-11] = ' '; | |
mapp[9 ][MAPCOL-12] = ' ' ; | |
/* --*/ | |
mapp[5 ][MAPCOL-1] = ' ' ; | |
mapp[5][MAPCOL-2] = ' ' ; | |
mapp[5 ][MAPCOL-3] = ' ' ; | |
mapp[5 ][MAPCOL-4] = ' ' ; | |
mapp[5 ][MAPCOL-5] = ' ' ; | |
mapp[5 ][MAPCOL-6] = ' ' ; | |
mapp[5 ][MAPCOL-7] = ' ' ; | |
mapp[5 ][MAPCOL-8] = ' ' ; | |
mapp[5 ][MAPCOL-9] = ' ' ; | |
mapp[5][MAPCOL-10] = ' ' ; | |
mapp[5 ][MAPCOL-11] = ' ' ; | |
mapp[5 ][MAPCOL-12] = ' ' ; | |
mapp[5 ][MAPCOL-13] = ' ' ; | |
mapp[5 ][MAPCOL-14] = ' ' ; | |
mapp[5 ][MAPCOL-15] = ' ' ; | |
mapp[5 ][MAPCOL-16] = ' ' ; | |
mapp[5 ][MAPCOL-17] = ' ' ; | |
} | |
break; | |
case 5 : | |
a1 = ( rand()% (MAPROW -1)) + 5; | |
if(a1 < MAPROW - 1) | |
{ | |
i = rand() % 3 ; | |
switch(i) | |
{ | |
case 0 : | |
mapp[a1][MAPCOL-1] = MAPC ; | |
mapp[a1][MAPCOL-2] = MAPC ; | |
mapp[a1][MAPCOL-3] = MAPC ; | |
mapp[a1][MAPCOL-4] = MAPC ; | |
mapp[a1][MAPCOL-5] = MAPC ; | |
mapp[a1 -1][MAPCOL-1] = MAPC ; | |
mapp[a1 -1][MAPCOL-2] = MAPC ; | |
mapp[a1 -1][MAPCOL-3] = MAPC ; | |
mapp[a1 -1][MAPCOL-4] = MAPC ; | |
mapp[a1 -2][MAPCOL-1] = MAPC ; | |
mapp[a1 -2][MAPCOL-2] = MAPC ; | |
mapp[a1 -2][MAPCOL-3] = MAPC ; | |
mapp[a1 -3][MAPCOL-1] = MAPC ; | |
mapp[a1 -3][MAPCOL-2] = MAPC ; | |
mapp[a1 -3][MAPCOL-3] = MAPC ; | |
mapp[a1 -3][MAPCOL-4] = MAPC ; | |
mapp[a1 -4][MAPCOL-1] = MAPC ; | |
mapp[a1 -4][MAPCOL-2] = MAPC ; | |
mapp[a1 -4][MAPCOL-3] = MAPC ; | |
mapp[a1 -4][MAPCOL-4] = MAPC ; | |
mapp[a1 -4][MAPCOL-5] = MAPC ; | |
break; | |
case 1 : | |
mapp[a1][MAPCOL-1] = MAPC ; | |
mapp[a1][MAPCOL-2] = MAPC ; | |
mapp[a1][MAPCOL-3] = MAPC ; | |
mapp[a1][MAPCOL-4] = MAPC ; | |
mapp[a1][MAPCOL-5] = MAPC ; | |
mapp[a1-1][MAPCOL-1] = MAPC ; | |
mapp[a1-1][MAPCOL-2] = MAPC ; | |
mapp[a1-1][MAPCOL-3] = MAPC ; | |
mapp[a1-1][MAPCOL-4] = MAPC ; | |
mapp[a1-1][MAPCOL-5] = MAPC ; | |
mapp[a1-2][MAPCOL-1] = MAPC ; | |
mapp[a1-2][MAPCOL-2] = MAPC ; | |
mapp[a1-2][MAPCOL-3] = MAPC ; | |
mapp[a1-2][MAPCOL-4] = MAPC ; | |
mapp[a1-2][MAPCOL-5] = MAPC ; | |
mapp[a1-3][MAPCOL-1] = MAPC ; | |
mapp[a1-3][MAPCOL-2] = MAPC ; | |
mapp[a1-3][MAPCOL-3] = MAPC ; | |
mapp[a1-3][MAPCOL-4] = MAPC ; | |
mapp[a1-3][MAPCOL-5] = MAPC ; | |
mapp[MAPROW-6][MAPCOL-1] = MAPC ; | |
mapp[MAPROW-6][MAPCOL-2] = MAPC ; | |
mapp[MAPROW-6][MAPCOL-3] = MAPC ; | |
mapp[MAPROW-6][MAPCOL-4] = MAPC ; | |
mapp[MAPROW-6][MAPCOL-5] = MAPC ; | |
mapp[MAPROW-5][MAPCOL-1] = MAPC ; | |
mapp[MAPROW-5][MAPCOL-2] = MAPC ; | |
mapp[MAPROW-5][MAPCOL-3] = MAPC ; | |
mapp[MAPROW-5][MAPCOL-4] = MAPC ; | |
mapp[MAPROW-5][MAPCOL-5] = MAPC ; | |
mapp[MAPROW-4][MAPCOL-1] = MAPC ; | |
mapp[MAPROW-4][MAPCOL-2] = MAPC ; | |
mapp[MAPROW-4][MAPCOL-3] = MAPC ; | |
mapp[MAPROW-4][MAPCOL-4] = MAPC ; | |
mapp[MAPROW-4][MAPCOL-5] = MAPC ; | |
mapp[MAPROW-3][MAPCOL-1] = MAPC ; | |
mapp[MAPROW-3][MAPCOL-2] = MAPC ; | |
mapp[MAPROW-3][MAPCOL-3] = MAPC ; | |
mapp[MAPROW-3][MAPCOL-4] = MAPC ; | |
mapp[MAPROW-3][MAPCOL-5] = MAPC ; | |
mapp[MAPROW-7][MAPCOL-2] = MAPC ; | |
mapp[MAPROW-7][MAPCOL-3] = MAPC ; | |
mapp[MAPROW-7][MAPCOL-4] = MAPC ; | |
mapp[MAPROW-8][MAPCOL-3] = MAPC ; | |
break; | |
case 2 : | |
mapp[1][MAPCOL-1] = MAPC ; | |
mapp[1][MAPCOL-2] = MAPC ; | |
mapp[1][MAPCOL-3] = MAPC ; | |
mapp[1][MAPCOL-4] = MAPC ; | |
mapp[1][MAPCOL-5] = MAPC ; | |
mapp[2][MAPCOL-2] = MAPC ; | |
mapp[2][MAPCOL-3] = MAPC ; | |
mapp[2][MAPCOL-4] = MAPC ; | |
mapp[3][MAPCOL-3] = MAPC ; | |
mapp[MAPROW-3][MAPCOL-1] = MAPC ; | |
mapp[MAPROW-3][MAPCOL-2] = MAPC ; | |
mapp[MAPROW-3][MAPCOL-3] = MAPC ; | |
mapp[MAPROW-3][MAPCOL-4] = MAPC ; | |
mapp[MAPROW-3][MAPCOL-5] = MAPC ; | |
mapp[MAPROW-4][MAPCOL-2] = MAPC ; | |
mapp[MAPROW-4][MAPCOL-3] = MAPC ; | |
mapp[MAPROW-4][MAPCOL-4] = MAPC ; | |
mapp[MAPROW-5][MAPCOL-3] = MAPC ; | |
mapp[a1][MAPCOL-1] = MAPC ; | |
mapp[a1][MAPCOL-2] = MAPC ; | |
mapp[a1][MAPCOL-3] = MAPC ; | |
mapp[a1][MAPCOL-4] = MAPC ; | |
} | |
} | |
else | |
{ | |
mapp[10 ][MAPCOL-1] = MAPC ; | |
mapp[10 ][MAPCOL-2] = MAPC ; | |
mapp[10 ][MAPCOL-3] = MAPC ; | |
mapp[10 ][MAPCOL-4] = ' ' ; | |
mapp[10 ][MAPCOL-5] = ' ' ; | |
mapp[10 ][MAPCOL-6] = MAPC ; | |
mapp[10 ][MAPCOL-7] = ' ' ; | |
mapp[10 ][MAPCOL-8] = ' ' ; | |
mapp[10 ][MAPCOL-9] = ' ' ; | |
mapp[10 ][MAPCOL-10] = MAPC ; | |
mapp[10 ][MAPCOL-11] = ' ' ; | |
mapp[10 ][MAPCOL-12] = ' ' ; | |
mapp[10 ][MAPCOL-13] = MAPC ; | |
mapp[10 ][MAPCOL-14] = MAPC ; | |
mapp[10 ][MAPCOL-15] = MAPC ; | |
mapp[10 ][MAPCOL-16] = ' ' ; | |
mapp[10 ][MAPCOL-17] = ' ' ; | |
/* --*/ | |
mapp[9 ][MAPCOL-1] = ' ' ; | |
mapp[9 ][MAPCOL-2] = ' ' ; | |
mapp[9 ][MAPCOL-3] = MAPC ; | |
mapp[9 ][MAPCOL-4] = ' ' ; | |
mapp[9 ][MAPCOL-5] = ' ' ; | |
mapp[9 ][MAPCOL-6] = MAPC ; | |
mapp[9 ][MAPCOL-7] = ' ' ; | |
mapp[9 ][MAPCOL-8] = ' ' ; | |
mapp[9 ][MAPCOL-9] = ' ' ; | |
mapp[9 ][MAPCOL-10] = MAPC ; | |
mapp[9 ][MAPCOL-11] = ' ' ; | |
mapp[9 ][MAPCOL-12] = ' ' ; | |
mapp[9 ][MAPCOL-13] = MAPC ; | |
mapp[9 ][MAPCOL-14] = ' ' ; | |
mapp[9 ][MAPCOL-15] = MAPC ; | |
mapp[9 ][MAPCOL-16] = ' ' ; | |
mapp[9 ][MAPCOL-17] = ' ' ; | |
/* --*/ | |
mapp[8 ][MAPCOL-1] = ' ' ; | |
mapp[8 ][MAPCOL-2] = MAPC ; | |
mapp[8 ][MAPCOL-3] = MAPC ; | |
mapp[8 ][MAPCOL-4] = ' ' ; | |
mapp[8 ][MAPCOL-5] = ' ' ; | |
mapp[8 ][MAPCOL-6] = MAPC ; | |
mapp[8 ][MAPCOL-7] = ' ' ; | |
mapp[8 ][MAPCOL-8] = ' ' ; | |
mapp[8 ][MAPCOL-9] = ' ' ; | |
mapp[8][MAPCOL-10] = MAPC ; | |
mapp[8 ][MAPCOL-11] = ' ' ; | |
mapp[8 ][MAPCOL-12] = ' ' ; | |
mapp[8 ][MAPCOL-13] = MAPC ; | |
mapp[8 ][MAPCOL-14] = MAPC ; | |
mapp[8 ][MAPCOL-15] = MAPC ; | |
mapp[8 ][MAPCOL-16] = ' ' ; | |
mapp[8 ][MAPCOL-17] = ' ' ; | |
/* --*/ | |
mapp[7 ][MAPCOL-1] = ' ' ; | |
mapp[7][MAPCOL-2] = ' ' ; | |
mapp[7 ][MAPCOL-3] = MAPC ; | |
mapp[7 ][MAPCOL-4] = ' ' ; | |
mapp[7 ][MAPCOL-5] = ' ' ; | |
mapp[7 ][MAPCOL-6] = MAPC ; | |
mapp[7 ][MAPCOL-7] = ' ' ; | |
mapp[7 ][MAPCOL-8] = ' ' ; | |
mapp[7 ][MAPCOL-9] = ' ' ; | |
mapp[7][MAPCOL-10] = MAPC ; | |
mapp[7 ][MAPCOL-11] = ' ' ; | |
mapp[7 ][MAPCOL-12] = ' ' ; | |
mapp[7 ][MAPCOL-13] = ' ' ; | |
mapp[7 ][MAPCOL-14] = ' ' ; | |
mapp[7 ][MAPCOL-15] = MAPC ; | |
mapp[7 ][MAPCOL-16] = ' ' ; | |
mapp[7 ][MAPCOL-17] = ' ' ; | |
/* --*/ | |
mapp[6 ][MAPCOL-1] = MAPC ; | |
mapp[6][MAPCOL-2] = MAPC; | |
mapp[6 ][MAPCOL-3] = MAPC ; | |
mapp[6 ][MAPCOL-4] = ' ' ; | |
mapp[6 ][MAPCOL-5] = MAPC; | |
mapp[6 ][MAPCOL-6] = MAPC; | |
mapp[6 ][MAPCOL-7] = MAPC; | |
mapp[6][MAPCOL-8] = ' ' ; | |
mapp[6 ][MAPCOL-9] = MAPC; | |
mapp[6][MAPCOL-10] = ' ' ; | |
mapp[6 ][MAPCOL-11] = MAPC; | |
mapp[6 ][MAPCOL-12] = ' ' ; | |
mapp[6 ][MAPCOL-13] = MAPC; | |
mapp[6 ][MAPCOL-14] = MAPC; | |
mapp[6 ][MAPCOL-15] = MAPC; | |
mapp[6 ][MAPCOL-16] = ' ' ; | |
mapp[6 ][MAPCOL-17] = ' ' ; | |
/* --*/ | |
mapp[5 ][MAPCOL-1] = ' ' ; | |
mapp[5][MAPCOL-2] = ' ' ; | |
mapp[5 ][MAPCOL-3] = ' ' ; | |
mapp[5 ][MAPCOL-4] = ' ' ; | |
mapp[5 ][MAPCOL-5] = ' ' ; | |
mapp[5 ][MAPCOL-6] = ' ' ; | |
mapp[5 ][MAPCOL-7] = ' ' ; | |
mapp[5 ][MAPCOL-8] = ' ' ; | |
mapp[5 ][MAPCOL-9] = ' ' ; | |
mapp[5][MAPCOL-10] = ' ' ; | |
mapp[5 ][MAPCOL-11] = ' ' ; | |
mapp[5 ][MAPCOL-12] = ' ' ; | |
mapp[5 ][MAPCOL-13] = ' ' ; | |
mapp[5 ][MAPCOL-14] = ' ' ; | |
mapp[5 ][MAPCOL-15] = ' ' ; | |
mapp[5 ][MAPCOL-16] = ' ' ; | |
mapp[5 ][MAPCOL-17] = ' ' ; | |
} | |
mapp[MAPROW -2][MAPCOL-1] = MAPC ; | |
mapp[MAPROW -2][MAPCOL-2] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-3] = MAPC ; | |
mapp[MAPROW -2 ][MAPCOL-4] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-5] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-6] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-7] = MAPC; | |
mapp[MAPROW -2][MAPCOL-8] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-9] = MAPC; | |
mapp[MAPROW -2][MAPCOL-10] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-11] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-12] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-13] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-14] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-15] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-16] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-17] = MAPC; | |
mapp[MAPROW -2][MAPCOL-18] = MAPC ; | |
mapp[MAPROW -2][MAPCOL-19] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-20] = MAPC ; | |
mapp[MAPROW -2 ][MAPCOL-21] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-22] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-23] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-24] = MAPC; | |
mapp[MAPROW -2][MAPCOL-25] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-26] = MAPC; | |
mapp[MAPROW -2][MAPCOL-27] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-28] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-29] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-30] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-31] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-32] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-33] = MAPC; | |
mapp[MAPROW -2 ][MAPCOL-34] = MAPC; | |
break; | |
default : | |
fprintf(errors," \n ERROR : WRONG INPUT ( LEVEL) IN FUNCTION createMap\n "); | |
} | |
fclose(errors); | |
} | |
/**********************************************************************************/ | |
/* Function fullSpace */ | |
/*--------------------------------------------------------------------------------*/ | |
/* This function full space character in 2D array and | |
function will print the borders of map */ | |
/*--------------------------------------------------------------------------------*/ | |
/* INPUT: Map of Game ( 2D array ) */ | |
/**********************************************************************************/ | |
void fullSpace(char mapp[MAPROW][MAPCOL]) | |
{ | |
int i, j; | |
for(i=0;i<MAPROW;++i) | |
{ | |
for(j=0;j<MAPCOL;++j) | |
{ | |
if(i == 0 || i == MAPROW -1 ) | |
{ | |
mapp[i][j] = MAPC; | |
} | |
else | |
{ | |
mapp[i][j] = ' '; | |
} | |
} | |
} | |
} | |
/**********************************************************************************/ | |
/* Function printGame */ | |
/*--------------------------------------------------------------------------------*/ | |
/* This function will try printing the map */ | |
/*--------------------------------------------------------------------------------*/ | |
/* INPUT: Map of Game ( 2D array ) */ | |
/* INPUT: File stream ( FILE pointer ) */ | |
/**********************************************************************************/ | |
void printGame(char mapp[MAPROW][MAPCOL], FILE *outp) | |
{ | |
int i, j; | |
FILE *informationp; | |
if( outp != NULL ) | |
{ | |
for(i=0;i<MAPROW;++i) | |
{ | |
for(j=0;j<MAPCOL;++j) | |
{ | |
fprintf(outp,"%c",mapp[i][j]); | |
} | |
fprintf(outp,"\n"); | |
} | |
} | |
else | |
{ | |
informationp = fopen(ERRORS,"a+"); | |
fprintf(informationp,"\n ERROR : WRONG INPUT (FILE STREAM) IN FUNCTION printGame"); | |
} | |
} | |
/**********************************************************************************/ | |
/* Function goOnGame */ | |
/*--------------------------------------------------------------------------------*/ | |
/* this function try shifting the map one coloumn and | |
the helicopter to guide the helicopter.. */ | |
/*--------------------------------------------------------------------------------*/ | |
/* INPUT: Map of Game ( 2D array ) */ | |
/**********************************************************************************/ | |
int goOnGame(char mapp[MAPROW][MAPCOL]) | |
{ | |
int i,j; | |
int crash = 0; | |
for(i=1; i<MAPROW - 1 ; i++ ) | |
{ | |
for(j = 2; j< MAPCOL ; j += 1) | |
{ | |
if( mapp[i][j] != HELI && mapp[i][j-1] != HELI) | |
{ | |
mapp[i][j-1] = mapp[i][j]; | |
mapp[i][j] = ' '; | |
} | |
else | |
{ | |
if( mapp[i][j-1] == HELI && mapp[i][j] == MAPC ) | |
{ | |
crash = 1; | |
/* loop break */ | |
j = MAPCOL; | |
i = MAPROW; | |
printf("\a"); | |
} | |
} | |
} | |
} | |
return crash; | |
} | |
/**********************************************************************************/ | |
/* Function controlUp */ | |
/*--------------------------------------------------------------------------------*/ | |
/* This function will check to see if that was an accident. */ | |
/*--------------------------------------------------------------------------------*/ | |
/* INPUT: Map of Game ( 2D array ) */ | |
/**********************************************************************************/ | |
int controlUp() | |
{ | |
char ch; | |
ch = getch(); | |
if(ch == ' ') | |
hR--; | |
if( ch == 'p' || ch == 'P') | |
{ | |
while(ch != ' ') | |
{ | |
ch = getch(); | |
} | |
} | |
} | |
/**********************************************************************************/ | |
/* Function helicopter */ | |
/*--------------------------------------------------------------------------------*/ | |
/* This function will shift helicopter position */ | |
/*--------------------------------------------------------------------------------*/ | |
/* INPUT: Map of Game ( 2D array ) */ | |
/**********************************************************************************/ | |
int helicopter(char mapp[MAPROW][MAPCOL]) | |
{ | |
int i,j, crash = 0; | |
char ch = '~'; | |
for(i=1 ; i < MAPROW -1 ;++i) | |
{ | |
if( mapp[i][hC] == HELI || mapp[i][hC] == '>' || mapp[i][hC] == '<') | |
mapp[i][hC] = ' '; | |
} | |
for(i=1 ; i < MAPROW -1 ;++i) | |
{ | |
if( mapp[i][hC+1] == HELI) | |
mapp[i][hC+1] = ' '; | |
} | |
if( mapp[hR][hC] == MAPC || | |
mapp[hR-1][hC] == MAPC || | |
mapp[hR+1][hC] == MAPC || | |
mapp[hR][hC+1] == MAPC ) | |
{ | |
crash = 1; | |
} | |
mapp[hR][hC] = ch; | |
mapp[hR-1][hC] = HELI; | |
mapp[hR+1][hC] = HELI; | |
mapp[hR][hC+1] = HELI; | |
return crash; | |
} | |
/***********************************************************************************/ | |
/* Function startGame */ | |
/*---------------------------------------------------------------------------------*/ | |
/* This function will be simulate game */ | |
/*---------------------------------------------------------------------------------*/ | |
/* INPUT: Map of Game ( 2D array ) | |
/* INPUT: time_t (time of starting game ) | |
/* INPUT: level of game | |
/* INPUT: File stream | |
/* INPUT: speed of game | |
/* INPUT: speed of creating map | |
/* INPUT: increasing of per second of score | |
/* INPUT: highest score */ | |
/***********************************************************************************/ | |
double startGame(char mapp[MAPROW][MAPCOL],time_t sTime, int level, FILE* outp, int speed, | |
int createSpeed, double scoreIncrsng, rekor_t rekor) | |
{ | |
double score = 0.0, time; | |
int i=1, flag0, flag1, flagSpace=0; | |
time_t fTime; | |
fullSpace(mapp); | |
createMap(mapp,level); | |
while(1) | |
{ | |
Sleep(speed); | |
if(kbhit()) | |
{ | |
controlUp(); | |
flagSpace++; | |
} | |
else | |
{ | |
++hR; | |
} | |
flag0 = helicopter(mapp); | |
fTime = clock(); | |
time = difftime(fTime,sTime); | |
time = time / 1000; | |
system(CLEAR); | |
printf("\nScore: %4.2f - Sec: %5.2f Best score: %4.2f - %s - %4.2f sec. |\n",score, time,rekor.score,rekor.name,rekor.time); | |
flag1 = goOnGame(mapp); | |
score += scoreIncrsng; | |
printGame(mapp,outp); | |
if( hR - 1 == 0 || hR+1 == 20) | |
{ | |
printf("\a"); | |
break; /* was crashed */ | |
} | |
if((i % createSpeed) == 0) | |
createMap(mapp,level); | |
++i; | |
if(flag1 || flag0) | |
{ | |
printf("\a"); | |
break; /* was crashed */ | |
} | |
if(i > 500) | |
i=0; | |
} | |
return score; | |
} | |
/*---------------------------------------------------------------------------------*/ | |
/* END_SUMMER_HOMEWORK_Ali_Tugrul_Pinar */ | |
/*---------------------------------------------------------------------------------*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment