Skip to content

Instantly share code, notes, and snippets.

@Codeplaza
Created November 15, 2013 15:12
Show Gist options
  • Save Codeplaza/7485851 to your computer and use it in GitHub Desktop.
Save Codeplaza/7485851 to your computer and use it in GitHub Desktop.
Blokko
/*############################################################################*/
/* 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