From b05fb77064eeb1da0cd93a846ec2b5cccd831371 Mon Sep 17 00:00:00 2001 From: Kevin MacMartin Date: Thu, 29 May 2014 12:50:57 -0400 Subject: [PATCH] Initial commit with working builds for linux and windows (via mingw32) --- DroidSans-Bold.ttf | Bin 0 -> 194488 bytes Makefile | 35 +++ isnake.c | 745 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 780 insertions(+) create mode 100644 DroidSans-Bold.ttf create mode 100755 Makefile create mode 100644 isnake.c diff --git a/DroidSans-Bold.ttf b/DroidSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d065b64eb1863f83c2c982264f9442f2313a44a9 GIT binary patch literal 194488 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 z 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 S{T +#include +#include + +#include +#include + +/*TITLE OF THE WINDOW*/ +#define GAMENAME "Intelligent Snake" + +/*FONT AND FONTSIZE*/ +#define DEFAULT_FONT_FILE "DroidSans-Bold.ttf" +#define DEFAULT_FONT_SIZE 22 + +/*HEIGHT AND WIDTH OF EACH TILE*/ +#define TILEWIDTH 20 +#define TILEHEIGHT 20 + +/*MIN+MAX+DEFAULT TILE ROWS AND COLUMNS*/ +#define MIN_TILESWIDE 30 +#define MIN_TILESHIGH 20 +#define MAX_TILESWIDE 80 +#define MAX_TILESHIGH 50 +#define DEFAULT_TILESWIDE 50 +#define DEFAULT_TILESHIGH 30 + +/*MIN+MAX+DEFAULT SNAKESPEED*/ +#define MIN_SNAKESPEED 1 +#define MAX_SNAKESPEED 9 +#define DEFAULT_SNAKESPEED 1 + +/*SNAKE LENGTH (+1 FOR BUFFER)*/ +#define MIN_SNAKELENGTH 4 +#define MAX_SNAKELENGTH 36 +#define DEFAULT_SNAKELENGTH 4 + +/*NUMBER OF NPCs (# OF BLOCKS + 1 FOR FOOD)*/ +#define MIN_NPCCOUNT 1 +#define MAX_NPCCOUNT 41 +#define DEFAULT_NPCCOUNT 21 + +/*AMOUNT OF FOOD EATEN BEFORE SNAKESPEED INCREASES*/ +#define ACCEL_FREQ 3 + +/*WHETHER TO DISPLAY COMMANDLINE OUTPUT DURING GAMEPLAY*/ +#define CONSOLE_OUTPUT true + +/*CONSTANT VALUES*/ +const int colourFood[3] = {255, 0, 0}; //Red +const int colourHead[3] = {55, 255, 55}; //Green +const int colourTail[3] = {55, 55, 255}; //Blue +const int colourBody[3] = {110, 55, 255}; //Purple +const int colourBlock[3] = {125, 55, 55}; //Brown +const int colourTiles[3] = {0, 45, 20}; //Dark Green +const int colourBackground[3] = {25, 25, 25}; //Black +const int colourTextGameOver[3] = {230, 230, 230}; //White +const int colourTextLabel[3] = {255, 0, 0}; //Red +const int colourTextData[3] = {55, 55, 255}; //Blue + +/*ENUMERATIONS FOR MORE READABLE CODE*/ +enum direction {Up, Down, Left, Right}; //Movement directions +enum gameParams {QuitGame, TilesHigh, TilesWide, NPCCount, SnakeSpeed, SnakeLength, SnakeDirection, SnakeScore}; + +/*GAME FUNCTIONS*/ +void gameLoop(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8], SDL_Event* event); +int moveSnake(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8], enum direction newDirection); +bool collisionDetect(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8], enum direction newDirection); +void collisionDetectFood(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8]); +bool gameEventPoll(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8], SDL_Event* event); +bool scrollSnake(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8]); +void updateSnake(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8]); +void loadNPCs(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8]); +void randomLocation(int** ppSprites, int (*gameParameters)[8], int* location[2]); +void drawText(SDL_Surface* screen, char* string, int size, int x, int y, SDL_Colour colour); +void updateRect(SDL_Surface* screen, SDL_Rect** ppTiles, int position[2], const int colour[3]); + +/*COMMANDLINE FUNCTIONS*/ +void configureGame(int argc, char** args, int (*gameParameters)[8]); +void printHelpMenu(char filename[]); +void printErrorHelp(char filename[]); + +/*MAIN LOOP*/ +int main(int argc, char* args[]) +{ + int x, y, gameParameters[8]; + int** ppSprites = NULL; + int* pSprites = NULL; + SDL_Surface* screen = NULL; + SDL_Rect** ppTiles = NULL; + SDL_Rect* pTiles = NULL; + SDL_Event event; + + //START RANDOM SEED TO HELP MAKE RANDOM NUMBERS MORE RANDOM + srand(time(NULL)); + + //CONFIGURE GAME SETTINGS USING DEFAULTS AND USER INPUT + configureGame(argc, args, &gameParameters); + + //INITIALIZE SDL + if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER) != 0) + { + fprintf(stderr, "\nUnable to initialize SDL: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + atexit(SDL_Quit); + + //INITIALIZE SDL_ttf + if (TTF_Init() != 0) + { + fprintf(stderr, "\nUnable to initialize SDL: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + atexit(TTF_Quit); + + //INITIALIZE THE MAIN SURFACE + if ((screen = SDL_SetVideoMode((TILEWIDTH * gameParameters[TilesWide]), (TILEHEIGHT * gameParameters[TilesHigh]) + 35, 32, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_ANYFORMAT)) == NULL) + { + fprintf(stderr, "\nUnable to initialize SDL: %s\n", SDL_GetError()); + exit(EXIT_FAILURE); + } + + //SET THE INPUT QUEUE TO IGNORE INPUT VIA MOUSE MOVEMENT + SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE); + + //SET WINDOW TITLE + SDL_WM_SetCaption(GAMENAME, NULL); + + //SET BACKGROUND COLOUR + SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, colourBackground[0], colourBackground[1], colourBackground[2])); + + while (gameParameters[QuitGame] == 0) + { + //INIT TILES ARRAY + pTiles = malloc(gameParameters[TilesWide] * sizeof(SDL_Rect)); + ppTiles = malloc(gameParameters[TilesHigh] * sizeof(SDL_Rect*)); + for (x = 0; x < gameParameters[TilesHigh]; x++) + ppTiles[x] = malloc(gameParameters[TilesWide] * sizeof(SDL_Rect)); + for (x = 0; x < gameParameters[TilesHigh]; x++) + for (y = 0; y < gameParameters[TilesWide]; y++) + { + ppTiles[x][y].w = TILEWIDTH - (TILEWIDTH / 10); + ppTiles[x][y].h = TILEHEIGHT - (TILEHEIGHT / 10); + ppTiles[x][y].x = ((ppTiles[x][y].w + (TILEWIDTH / 10)) * y); + ppTiles[x][y].y = ((ppTiles[x][y].h + (TILEHEIGHT / 10)) * x); + SDL_FillRect(screen, &ppTiles[x][y], SDL_MapRGB(screen->format, colourTiles[0], colourTiles[1], colourTiles[2])); + } + + //INIT SPRITES ARRAY + pSprites = malloc(2 * sizeof(int)); + ppSprites = malloc((gameParameters[NPCCount] + MAX_SNAKELENGTH) * sizeof(int*)); //The array is defined by the snake's maximum size so it can grow during gameplay + for (x = 0; x < gameParameters[NPCCount] + MAX_SNAKELENGTH; x++) + { + ppSprites[x] = malloc(2 * sizeof(int)); + ppSprites[x][0] = 0; + ppSprites[x][1] = 0; + } + + //SET SNAKE START POSITION + for (x = gameParameters[NPCCount]; x < gameParameters[NPCCount] + gameParameters[SnakeLength]; x++) + { + ppSprites[x][0] = 3; + ppSprites[x][1] = (3 + gameParameters[NPCCount] + gameParameters[SnakeLength] - DEFAULT_SNAKELENGTH + 2 - x); + } + + //SET NPC LOCATIONS + for (x = 0; x < gameParameters[NPCCount]; x++) + randomLocation(ppSprites, &gameParameters, &(ppSprites)[x]); + + //GAME LOOP + gameLoop(screen, ppTiles, ppSprites, &gameParameters, &event); + + //FREE MEMORY AND RESET POINTERS + free(ppTiles); + free(ppSprites); + ppSprites = NULL; + pSprites = NULL; + + //RESET GAME SETTINGS USING DEFAULTS AND USER INPUT + if (gameParameters[QuitGame] == 0) configureGame(argc, args, &gameParameters); + } + + //FREEING THE SCREEN SURFACE BEFORE EXITING + SDL_FreeSurface(screen); + + //EXIT THE PROGRAM + exit(EXIT_SUCCESS); +} + +/*GAME LOOP*/ +void gameLoop(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8], SDL_Event* event) +{ + SDL_Colour SDL_ColourBackground = {colourBackground[0], colourBackground[1], colourBackground[2]}; + SDL_Colour SDL_ColourTextLabel = {colourTextLabel[0], colourTextLabel[1], colourTextLabel[2]}; + SDL_Colour SDL_ColourTextData = {colourTextData[0], colourTextData[1], colourTextData[2]}; + SDL_Colour SDL_ColourTextGameOver = {colourTextGameOver[0], colourTextGameOver[1], colourTextGameOver[2]}; + int scoreLabelPosition[2] = {15, (TILEHEIGHT * (*gameParameters)[TilesHigh]) + 4}; + int scoreDataPosition[2] = {95, (TILEHEIGHT * (*gameParameters)[TilesHigh]) + 4}; + int speedLabelPosition[2] = {(TILEWIDTH * (*gameParameters)[TilesWide]) - 100, (TILEHEIGHT * (*gameParameters)[TilesHigh]) + 4}; + int speedDataPosition[2] = {(TILEWIDTH * (*gameParameters)[TilesWide]) - 25, (TILEHEIGHT * (*gameParameters)[TilesHigh]) + 4}; + int gameOverMsgPosition[5] = {(TILEWIDTH * ((*gameParameters)[TilesWide] / 2)) - 147, (TILEWIDTH * ((*gameParameters)[TilesWide] / 2)) - 50, (TILEWIDTH * ((*gameParameters)[TilesWide] / 2)) + 61, (TILEWIDTH * ((*gameParameters)[TilesWide] / 2)) + 82, (TILEHEIGHT * (*gameParameters)[TilesHigh]) + 9}; + char* gameOverMsg[4] = {"GAME OVER", "SPACE to RESTART", " or ", "ESC to QUIT"}; + char tempString[2][3] = {"-1", "-1"}; + + //LOAD BLOCKS AND FOOD + loadNPCs(screen, ppTiles, ppSprites, gameParameters); + + //DRAW LABELS FOR SCORE AND SPEED RESPECTIVELY + drawText(screen, "SCORE", DEFAULT_FONT_SIZE, scoreLabelPosition[0], scoreLabelPosition[1], SDL_ColourTextLabel); + drawText(screen, "SPEED", DEFAULT_FONT_SIZE, speedLabelPosition[0], speedLabelPosition[1], SDL_ColourTextLabel); + + //LOOP UNTIL GAME IS FINISHED + while (1) + { + //UPDATE THE SNAKE'S SCORE WHEN IT CHANGES + if (atoi(tempString[0]) != (*gameParameters)[SnakeScore]) + { + if (atoi(tempString[0]) != -1) + drawText(screen, tempString[0], DEFAULT_FONT_SIZE, scoreDataPosition[0], scoreDataPosition[1], SDL_ColourBackground); + sprintf(tempString[0], "%d", (*gameParameters)[SnakeScore]); + drawText(screen, tempString[0], DEFAULT_FONT_SIZE, scoreDataPosition[0], scoreDataPosition[1], SDL_ColourTextData); + } + //UPDATE THE SNAKE'S SPEED WHEN IT CHANGES + if (atoi(tempString[1]) != (*gameParameters)[SnakeSpeed]) + { + if (atoi(tempString[1]) != -1) + drawText(screen, tempString[1], DEFAULT_FONT_SIZE, speedDataPosition[0], speedDataPosition[1], SDL_ColourBackground); + sprintf(tempString[1], "%d", (*gameParameters)[SnakeSpeed]); + drawText(screen, tempString[1], DEFAULT_FONT_SIZE, speedDataPosition[0], speedDataPosition[1], SDL_ColourTextData); + } + + if (gameEventPoll(screen, ppTiles, ppSprites, gameParameters, event) == false) break; + updateSnake(screen, ppTiles, ppSprites, gameParameters); + SDL_Flip(screen); + + SDL_Delay(250 / ((*gameParameters)[SnakeSpeed] + 3)); + + if (scrollSnake(screen, ppTiles, ppSprites, gameParameters) == false) break; + updateSnake(screen, ppTiles, ppSprites, gameParameters); + SDL_Flip(screen); + + SDL_Delay(250 / ((*gameParameters)[SnakeSpeed] + 3)); + + if (gameEventPoll(screen, ppTiles, ppSprites, gameParameters, event) == false) break; + updateSnake(screen, ppTiles, ppSprites, gameParameters); + SDL_Flip(screen); + } + + //DISPLAY GAME OVER MESSAGE AND WAIT FOR INPUT + if ((*gameParameters)[QuitGame] == 0) + { + //DISPLAY GAMEOVER MESSAGES + drawText(screen, gameOverMsg[0], DEFAULT_FONT_SIZE - 7, gameOverMsgPosition[0], gameOverMsgPosition[4], SDL_ColourTextGameOver); + drawText(screen, gameOverMsg[1], DEFAULT_FONT_SIZE - 9, gameOverMsgPosition[1], gameOverMsgPosition[4], SDL_ColourTextData); + drawText(screen, gameOverMsg[2], DEFAULT_FONT_SIZE - 9, gameOverMsgPosition[2], gameOverMsgPosition[4], SDL_ColourTextGameOver); + drawText(screen, gameOverMsg[3], DEFAULT_FONT_SIZE - 9, gameOverMsgPosition[3], gameOverMsgPosition[4], SDL_ColourTextData); + SDL_Flip(screen); + + //WAIT A MOMENT TO ENSURE INPUT FROM THE GAME ISN'T CAUGHT + SDL_Delay(250 / ((*gameParameters)[SnakeSpeed] + 3)); + + //CAPTURE SDL_QUIT TO EXIT, ESCAPE TO EXIT, OR SPACEBAR TO RESTART + while (1) + { + if (SDL_PollEvent(event)) + { + if ((*event).type == SDL_QUIT) + { + (*gameParameters)[QuitGame] = 1; + break; + } + else if ((*event).type == SDL_KEYDOWN) + { + if (((*event).key.keysym.sym == SDLK_ESCAPE) || ((*event).key.keysym.sym == SDLK_q)) + { + (*gameParameters)[QuitGame] = 1; + break; + } + else if (((*event).key.keysym.sym == SDLK_SPACE) || ((*event).key.keysym.sym == SDLK_RETURN)) break; + } + } + } + drawText(screen, gameOverMsg[0], DEFAULT_FONT_SIZE - 7, gameOverMsgPosition[0], gameOverMsgPosition[4], SDL_ColourBackground); + drawText(screen, gameOverMsg[1], DEFAULT_FONT_SIZE - 9, gameOverMsgPosition[1], gameOverMsgPosition[4], SDL_ColourBackground); + drawText(screen, gameOverMsg[2], DEFAULT_FONT_SIZE - 9, gameOverMsgPosition[2], gameOverMsgPosition[4], SDL_ColourBackground); + drawText(screen, gameOverMsg[3], DEFAULT_FONT_SIZE - 9, gameOverMsgPosition[3], gameOverMsgPosition[4], SDL_ColourBackground); + SDL_Flip(screen); + } + + drawText(screen, "SCORE", DEFAULT_FONT_SIZE, scoreLabelPosition[0], scoreLabelPosition[1], SDL_ColourBackground); + drawText(screen, "SPEED", DEFAULT_FONT_SIZE, speedLabelPosition[0], speedLabelPosition[1], SDL_ColourBackground); + if (atoi(tempString[0]) != -1) + drawText(screen, tempString[0], DEFAULT_FONT_SIZE, scoreDataPosition[0], scoreDataPosition[1], SDL_ColourBackground); + if (atoi(tempString[1]) != -1) + drawText(screen, tempString[1], DEFAULT_FONT_SIZE, speedDataPosition[0], speedDataPosition[1], SDL_ColourBackground); +} + +/*MOVES THE SNAKE IN THE DESIRED DIRECTION*/ +int moveSnake(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8], enum direction newDirection) +{ + int x; + + //MOVEMENT + for (x = (*gameParameters)[NPCCount] + (*gameParameters)[SnakeLength] - 1; x >= (*gameParameters)[NPCCount]; x--) + { + if (x == (*gameParameters)[NPCCount]) + { + //MOVE THE HEAD OF THE SNAKE TO THE NEW DIRECTION + switch (newDirection) + { + case Up: + ppSprites[x][0] = ppSprites[x][0] - 1; + (*gameParameters)[SnakeDirection] = 0; + break; + case Down: + ppSprites[x][0] = ppSprites[x][0] + 1; + (*gameParameters)[SnakeDirection] = 1; + break; + case Left: + ppSprites[x][1] = ppSprites[x][1] - 1; + (*gameParameters)[SnakeDirection] = 2; + break; + case Right: + ppSprites[x][1] = ppSprites[x][1] + 1; + (*gameParameters)[SnakeDirection] = 3; + break; + } + } + else + { + //MOVE THE BODY/TAIL OF THE SNAKE TO THE PIECE AHEAD OF IT + ppSprites[x][0] = ppSprites[x - 1][0]; + ppSprites[x][1] = ppSprites[x - 1][1]; + } + } +} + +/*DETECT+HANDLE WHEN THE SNAKE COLLIDES WITH WALLS, BLOCKS, ITSELF OR FOOD*/ +bool collisionDetect(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8], enum direction newDirection) +{ + int x; + + switch (newDirection) + { + case Up: + for (x = 0; x < (*gameParameters)[NPCCount] + (*gameParameters)[SnakeLength] - 2; ++x) + { + if (((ppSprites[(*gameParameters)[NPCCount]][0] - 1) == ppSprites[x][0]) && (ppSprites[(*gameParameters)[NPCCount]][1] == ppSprites[x][1])) + { + if (x == 0) collisionDetectFood(screen, ppTiles, ppSprites, gameParameters); + else return false; + } + } + if ((ppSprites[(*gameParameters)[NPCCount]][0] - 1) < 0) return false; + moveSnake(screen, ppTiles, ppSprites, gameParameters, Up); + break; + case Down: + for (x = 0; x < (*gameParameters)[NPCCount] + (*gameParameters)[SnakeLength] - 2; ++x) + { + if (((ppSprites[(*gameParameters)[NPCCount]][0] + 1) == ppSprites[x][0]) && (ppSprites[(*gameParameters)[NPCCount]][1] == ppSprites[x][1])) + { + if (x == 0) collisionDetectFood(screen, ppTiles, ppSprites, gameParameters); + else return false; + } + } + if ((ppSprites[(*gameParameters)[NPCCount]][0] + 1) >= (*gameParameters)[TilesHigh]) return false; + moveSnake(screen, ppTiles, ppSprites, gameParameters, Down); + break; + case Left: + for (x = 0; x < (*gameParameters)[NPCCount] + (*gameParameters)[SnakeLength] - 2; ++x) + { + if (((ppSprites[(*gameParameters)[NPCCount]][1] - 1) == ppSprites[x][1]) && (ppSprites[(*gameParameters)[NPCCount]][0] == ppSprites[x][0])) + { + if (x == 0) collisionDetectFood(screen, ppTiles, ppSprites, gameParameters); + else return false; + } + } + if ((ppSprites[(*gameParameters)[NPCCount]][1] - 1) < 0) return false;; + moveSnake(screen, ppTiles, ppSprites, gameParameters, Left); + break; + case Right: + for (x = 0; x < (*gameParameters)[NPCCount] + (*gameParameters)[SnakeLength] - 2; ++x) + { + if (((ppSprites[(*gameParameters)[NPCCount]][1] + 1) == ppSprites[x][1]) && (ppSprites[(*gameParameters)[NPCCount]][0] == ppSprites[x][0])) + { + if (x == 0) collisionDetectFood(screen, ppTiles, ppSprites, gameParameters); + else return false; + } + } + if ((ppSprites[(*gameParameters)[NPCCount]][1] + 1) >= (*gameParameters)[TilesWide]) return false;; + moveSnake(screen, ppTiles, ppSprites, gameParameters, Right); + break; + } + return true; +} + +/*HANDLES COLLISION WITH FOOD*/ +void collisionDetectFood(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8]) +{ + //INCREASE THE SNAKE'S SIZE IF IT'S NOT ALREADY THE MAXIMUM + if ((*gameParameters)[SnakeLength] < MAX_SNAKELENGTH) (*gameParameters)[SnakeLength]++; + + //INCREASE THE SNAKE'S SPEED WHEN THE SCORE IS DIVISIBLE BY ACCEL_FREQ + if ((((*gameParameters)[SnakeScore] % ACCEL_FREQ) == 0) && ((*gameParameters)[SnakeScore] != 0) && ((*gameParameters)[SnakeSpeed] < MAX_SNAKESPEED)) (*gameParameters)[SnakeSpeed]++; + + //INCREASE THE SNAKE'S SCORE + (*gameParameters)[SnakeScore]++; + + //SET FOOD PIECE IN NEW LOCATION + randomLocation(ppSprites, gameParameters, &(ppSprites)[0]); + updateRect(screen, ppTiles, ppSprites[0], colourFood); + + SDL_Flip(screen); +} + +/*CAPTURES INPUT AND GENERATES APPROPRIATE RESPONSE*/ +bool gameEventPoll(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8], SDL_Event* event) +{ + bool playerAlive = true; + + if (SDL_PollEvent(event)) + { + switch ((*event).type) + { + case SDL_QUIT: + playerAlive = false; + (*gameParameters)[QuitGame] = 1; + break; + case SDL_KEYDOWN: + //WHEN KEY IS PRESSED, CHECK WHICH AND RESPOND ACCORDINGLY + switch ((*event).key.keysym.sym) + { + case SDLK_UP: + case SDLK_w: + case SDLK_k: + if (((*gameParameters)[SnakeDirection] != Up) && ((*gameParameters)[SnakeDirection] != Down)) + playerAlive = (collisionDetect(screen, ppTiles, ppSprites, gameParameters, Up)); + break; + case SDLK_DOWN: + case SDLK_s: + case SDLK_j: + if (((*gameParameters)[SnakeDirection] != Down) && ((*gameParameters)[SnakeDirection] != Up)) + playerAlive = (collisionDetect(screen, ppTiles, ppSprites, gameParameters, Down)); + break; + case SDLK_LEFT: + case SDLK_a: + case SDLK_h: + if (((*gameParameters)[SnakeDirection] != Left) && ((*gameParameters)[SnakeDirection] != Right) && ((*gameParameters)[SnakeDirection] != -1)) + playerAlive = (collisionDetect(screen, ppTiles, ppSprites, gameParameters, Left)); + break; + case SDLK_RIGHT: + case SDLK_d: + case SDLK_l: + if (((*gameParameters)[SnakeDirection] != Right) && ((*gameParameters)[SnakeDirection] != Left)) + playerAlive = (collisionDetect(screen, ppTiles, ppSprites, gameParameters, Right)); + break; + case SDLK_ESCAPE: + case SDLK_q: + playerAlive = false; + (*gameParameters)[QuitGame] = 1; + break; + } + break; + } + } + return playerAlive; +} + +/*MOVES SNAKE AUTOMATICALLY IN WHICHEVER DIRECTION IT WENT LAST*/ +bool scrollSnake(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8]) +{ + bool playerAlive = true; + + switch ((*gameParameters)[SnakeDirection]) + { + case Up: + playerAlive = (collisionDetect(screen, ppTiles, ppSprites, gameParameters, Up)); + break; + case Down: + playerAlive = (collisionDetect(screen, ppTiles, ppSprites, gameParameters, Down)); + break; + case Left: + playerAlive = (collisionDetect(screen, ppTiles, ppSprites, gameParameters, Left)); + break; + case Right: + playerAlive = (collisionDetect(screen, ppTiles, ppSprites, gameParameters, Right)); + break; + default: + break; + } + return playerAlive; +} + +/*REDRAW THE SNAKE BASED ON CURRENT VALUES*/ +void updateSnake(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8]) +{ + int x; + + for (x = (*gameParameters)[NPCCount]; x < (*gameParameters)[NPCCount] + (*gameParameters)[SnakeLength]; x++) + { + if (x == (*gameParameters)[NPCCount]) updateRect(screen, ppTiles, ppSprites[x], colourHead); + else if (x == ((*gameParameters)[NPCCount] + (*gameParameters)[SnakeLength] - 1)) updateRect(screen, ppTiles, ppSprites[x], colourTiles); + else if (x == ((*gameParameters)[NPCCount] + (*gameParameters)[SnakeLength] - 2)) updateRect(screen, ppTiles, ppSprites[x], colourTail); + else updateRect(screen, ppTiles, ppSprites[x], colourBody); + } +} + +/*DRAW NPCs BASED ON ON CURRENT VALUES*/ +void loadNPCs(SDL_Surface* screen, SDL_Rect** ppTiles, int** ppSprites, int (*gameParameters)[8]) +{ + int x, startNPCs = 0; + + for (x = startNPCs; x < (*gameParameters)[NPCCount]; x++) + { + if (x == startNPCs) updateRect(screen, ppTiles, ppSprites[x], colourFood); + else updateRect(screen, ppTiles, ppSprites[x], colourBlock); + } +} + +/*A HELPER FUNCTION TO RANDOMLY PLACE NPCs WITH SOME INTELLIGENCE*/ +void randomLocation(int** ppSprites, int (*gameParameters)[8], int* location[2]) +{ + int x, randLocation[2]; + bool isAcceptable = false; + + while (!isAcceptable) + { + isAcceptable = true; + randLocation[0] = (rand() % ((*gameParameters)[TilesHigh] - 2)) + 1; + randLocation[1] = (rand() % ((*gameParameters)[TilesWide] - 2)) + 1; + + //DON'T LOAD NPCs ONTO SNAKE OR OTHER NPCs + for (x = 0; x < (*gameParameters)[NPCCount] + (*gameParameters)[SnakeLength]; ++x) + if (((ppSprites[x][0]) == randLocation[0]) && ((ppSprites[x][1]) == randLocation[1])) isAcceptable = false; + + //DON'T LOAD NPCs DIRECTLY NEXT TO THE SNAKE'S HEAD + if (((((ppSprites[(*gameParameters)[NPCCount]][0]) - 1) == randLocation[0]) && (((ppSprites[(*gameParameters)[NPCCount]][1])) == randLocation[1])) || //ABOVE THE SNAKE'S HEAD + ((((ppSprites[(*gameParameters)[NPCCount]][0]) + 1) == randLocation[0]) && (((ppSprites[(*gameParameters)[NPCCount]][1])) == randLocation[1])) || //BELOW THE SNAKE'S HEAD + ((((ppSprites[(*gameParameters)[NPCCount]][0])) == randLocation[0]) && (((ppSprites[(*gameParameters)[NPCCount]][1]) - 1) == randLocation[1])) || //LEFT OF THE SNAKE'S HEAD + ((((ppSprites[(*gameParameters)[NPCCount]][0])) == randLocation[0]) && (((ppSprites[(*gameParameters)[NPCCount]][1]) + 1) == randLocation[1]))) //RIGHT OF THE SNAKE'S HEAD + isAcceptable = false; + } + + //SET THE GIVEN NPC'S LOCATION TO THE GENERATED COORDINATES + (*location)[0] = randLocation[0]; + (*location)[1] = randLocation[1]; +} + +//DRAW TEXT WHEN REQUIRED +void drawText(SDL_Surface* screen, char* string, int size, int x, int y, SDL_Colour colour) +{ + SDL_Colour SDL_ColourBackground = {colourBackground[0], colourBackground[1], colourBackground[2]}; + SDL_Rect coordinates = {x, y}; + SDL_Surface *newString = NULL; + TTF_Font *font; + + //LOAD THE FONT + font = TTF_OpenFont(DEFAULT_FONT_FILE, size); + if (!font) fprintf(stderr, "Error loading %s", DEFAULT_FONT_FILE); + + newString = TTF_RenderText_Shaded(font, string, colour, SDL_ColourBackground); + SDL_BlitSurface(newString, NULL, screen, &coordinates); + + TTF_CloseFont(font); + SDL_FreeSurface(newString); +} + +/*LOW LEVEL FUNCTION TO BE RUN BY HIGHER LEVEL ONES FOR UPDATING TILES*/ +void updateRect(SDL_Surface* screen, SDL_Rect** ppTiles, int position[2], const int colour[3]) +{ + SDL_FillRect(screen, &ppTiles[position[0]][position[1]], SDL_MapRGB(screen->format, colour[0], colour[1], colour[2])); +} + +/*PARSES COMMANDLINE OPTIONS AND GENERATES APPROPRIATE RESPONSE*/ +void configureGame(int argc, char** args, int (*gameParameters)[8]) +{ + int parsecount = 1; + + //SET DEFAULT GAME PARAMETERS + (*gameParameters)[QuitGame] = 0; + (*gameParameters)[TilesWide] = DEFAULT_TILESWIDE; + (*gameParameters)[TilesHigh] = DEFAULT_TILESHIGH; + (*gameParameters)[NPCCount] = DEFAULT_NPCCOUNT; + (*gameParameters)[SnakeSpeed] = DEFAULT_SNAKESPEED; + (*gameParameters)[SnakeLength] = DEFAULT_SNAKELENGTH; + (*gameParameters)[SnakeDirection] = -1; + (*gameParameters)[SnakeScore] = 0; + + //PARSE COMMANDLINE FOR SETTINGS + while (parsecount < argc) + { + //HELP MENU + if (strcmp(args[parsecount], "-h") == 0) + { + printHelpMenu(args[0]); + exit(EXIT_SUCCESS); + } + //RESOLUTION + else if (strcmp(args[parsecount], "-g") == 0) + { + if ((parsecount + 2) < argc) + { + if (((atoi(args[parsecount + 1]) >= MIN_TILESWIDE) && (atoi(args[parsecount + 1]) <= MAX_TILESWIDE)) && ((atoi(args[parsecount + 2]) >= MIN_TILESHIGH) && (atoi(args[parsecount + 2]) <= MAX_TILESHIGH))) + { + (*gameParameters)[TilesWide] = atoi(args[parsecount + 1]); + (*gameParameters)[TilesHigh] = atoi(args[parsecount + 2]); + parsecount = parsecount + 3; + } + else + { + printErrorHelp(args[0]); + exit(EXIT_FAILURE); + } + } + else + { + printErrorHelp(args[0]); + exit(EXIT_FAILURE); + } + } + //NUMBER OF BLOCKS + else if (strcmp(args[parsecount], "-b") == 0) + { + if ((parsecount + 1) < argc) + { + if ((atoi(args[parsecount + 1]) >= (MIN_NPCCOUNT - 1)) && (atoi(args[parsecount + 1]) <= (MAX_NPCCOUNT - 1))) + { + (*gameParameters)[NPCCount] = atoi(args[parsecount + 1]) + 1; + parsecount = parsecount + 2; + } + else + { + printErrorHelp(args[0]); + exit(EXIT_FAILURE); + } + } + else + { + printErrorHelp(args[0]); + exit(EXIT_FAILURE); + } + } + //SNAKE'S LENGTH + else if (strcmp(args[parsecount], "-l") == 0) + { + if ((parsecount + 1) < argc) + { + if ((atoi(args[parsecount + 1]) >= (MIN_SNAKELENGTH - 1)) && (atoi(args[parsecount + 1]) <= (MAX_SNAKELENGTH - 1))) + { + (*gameParameters)[SnakeLength] = atoi(args[parsecount + 1]) + 1; + parsecount = parsecount + 2; + } + else + { + printErrorHelp(args[0]); + exit(EXIT_FAILURE); + } + } + else + { + printErrorHelp(args[0]); + exit(EXIT_FAILURE); + } + } + //SNAKE'S SPEED + else if (strcmp(args[parsecount], "-s") == 0) + { + if ((parsecount + 1) < argc) + { + if ((atoi(args[parsecount + 1]) >= MIN_SNAKESPEED) && (atoi(args[parsecount + 1]) <= MAX_SNAKESPEED)) + { + (*gameParameters)[SnakeSpeed] = atoi(args[parsecount + 1]); + parsecount = parsecount + 2; + } + else + { + printErrorHelp(args[0]); + exit(EXIT_FAILURE); + } + } + else + { + printErrorHelp(args[0]); + exit(EXIT_FAILURE); + } + } + //FAIL IF ANYTHING ELSE + else + { + printErrorHelp(args[0]); + exit(EXIT_FAILURE); + } + } +} + +/*PRINT THE HELP MENU TO THE COMMANDLINE*/ +void printHelpMenu(char filename[]) +{ + fprintf(stdout, " Usage: %s [options]\n", filename); + fprintf(stdout, " Options:\n"); + fprintf(stdout, " -g [width] [height]\tSet the grid size: between [%d]x[%d] and [%d]x[%d] (DEFAULT: [%d]x[%d])\n", MIN_TILESWIDE, MIN_TILESHIGH, MAX_TILESWIDE, MAX_TILESHIGH, DEFAULT_TILESWIDE, DEFAULT_TILESHIGH); + fprintf(stdout, " -b [blocks]\t\tSet the number of blocks: between [%d] and [%d] (DEFAULT: [%d])\n", MIN_NPCCOUNT - 1, MAX_NPCCOUNT - 1, DEFAULT_NPCCOUNT - 1); + fprintf(stdout, " -l [length]\t\tSet the snake's starting length: between [%d] and [%d] (DEFAULT: [%d])\n", MIN_SNAKELENGTH - 1, MAX_SNAKELENGTH - 1, DEFAULT_SNAKELENGTH - 1); + fprintf(stdout, " -s [speed]\t\tSet the snake's starting speed: between [%d] and [%d] (DEFAULT: [%d])\n", MIN_SNAKESPEED, MAX_SNAKESPEED, DEFAULT_SNAKESPEED); + fprintf(stdout, " -h\t\t\tDisplay help information\n"); +} + +/*DISPLAYS AN ERROR MESSAGE BEFORE CALLING THE HELP MENU FUNCTION*/ +void printErrorHelp(char filename[]) +{ + fprintf(stderr, " Error: invalid input\n\n"); + printHelpMenu(filename); +} +