diff --git a/include/game.h b/include/game.h new file mode 100644 index 0000000..e353f18 --- /dev/null +++ b/include/game.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2018 Amine Ben Hassouna + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any + * person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the + * Software without restriction, including without + * limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software + * is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice + * shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF + * ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED + * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT + * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +#ifndef GAME_H +#define GAME_H + +#include + +#include "grid.h" + + +bool Game_start(SDL_Renderer *renderer, int w, int h); + +#endif // GAME_H diff --git a/src/game.c b/src/game.c new file mode 100644 index 0000000..24fba24 --- /dev/null +++ b/src/game.c @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2018 Amine Ben Hassouna + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any + * person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the + * Software without restriction, including without + * limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software + * is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice + * shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF + * ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED + * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT + * SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR + * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ + +#include "game.h" + +bool Game_start(SDL_Renderer *renderer, int w, int h) +{ + // Init grid + Grid grid = {0}; + + // Set grid dimensions + int padding = 50; + grid.rect.w = MIN(w - padding*2, h - padding*2); + grid.rect.h = grid.rect.w; + + // Set number of cells + grid.xCells = 10; + grid.yCells = 10; + + // Set cells interspace + grid.xInterspace = 6; + grid.yInterspace = 6; + + // Set backgroud and border color + grid.backgroundColor = COLOR_DARK_GRAY; + grid.borderColor = COLOR_GRAY; + + // Ajust size and center + Grid_ajustSize(&grid); + Grid_alignCenter(&grid, w, h); + + if(!Grid_init(&grid)) + { + fprintf(stderr, "Grid fail to initialize !\n"); + return false; + } + + // Event loop exit flag + bool quit = false; + + // Event loop + while(!quit) + { + SDL_Event e; + + // Get available event + if(SDL_WaitEvent(&e)) + { + // User requests quit + if(e.type == SDL_QUIT) + { + quit = true; + break; + } + } + + // Set background color + Utils_setBackgroundColor(renderer, COLOR_DARK_GRAY); + + // Render grid + Grid_render(&grid, renderer); + + // Update screen + SDL_RenderPresent(renderer); + } + + return true; +} diff --git a/src/main.c b/src/main.c index 55f2faf..37de0a9 100644 --- a/src/main.c +++ b/src/main.c @@ -33,7 +33,7 @@ #include -#include "utils.h" +#include "game.h" // Define screen dimensions #define SCREEN_WIDTH 800 @@ -71,47 +71,8 @@ int main(int argc, char* argv[]) } else { - // Declare rect of square - SDL_Rect squareRect; - - // Square dimensions: Half of the min(SCREEN_WIDTH, SCREEN_HEIGHT) - squareRect.w = MIN(SCREEN_WIDTH, SCREEN_HEIGHT) / 2; - squareRect.h = MIN(SCREEN_WIDTH, SCREEN_HEIGHT) / 2; - - // Square position: In the middle of the screen - squareRect.x = SCREEN_WIDTH / 2 - squareRect.w / 2; - squareRect.y = SCREEN_HEIGHT / 2 - squareRect.h / 2; - - - // Event loop exit flag - bool quit = false; - - // Event loop - while(!quit) - { - SDL_Event e; - - // Wait indefinitely for the next available event - SDL_WaitEvent(&e); - - // User requests quit - if(e.type == SDL_QUIT) - { - quit = true; - } - - // Set backgroud color - Utils_setBackgroundColor(renderer, COLOR_WHITE); - - // Set renderer color red to draw the square - SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0xFF); - - // Draw filled square - SDL_RenderFillRect(renderer, &squareRect); - - // Update screen - SDL_RenderPresent(renderer); - } + // Start the game + Game_start(renderer, SCREEN_WIDTH, SCREEN_HEIGHT); // Destroy renderer SDL_DestroyRenderer(renderer);