From b64d1fe1aab685bc6299cec9f49125943518d8e8 Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Tue, 12 Mar 2024 15:01:42 +0100 Subject: [PATCH] zero clickiki --- main.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index bfa2d3d..07a15e2 100644 --- a/main.c +++ b/main.c @@ -25,6 +25,7 @@ GameState game_state = PLAYING; int game_cap = 16*30; char game[16][30] = {0}; char discover[16][30] = {0}; +char zero[16][30] = {0}; typedef enum GameType { BEGINNER, @@ -119,10 +120,6 @@ int count_bomb(int x, int y) void fill_game(void) { - game_state = PLAYING; - memset(game, 0, game_cap); - memset(discover, 0, game_cap); - switch (current_game_type) { case BEGINNER: game_size.x = 9; @@ -162,6 +159,49 @@ void fill_game(void) } } +void discover_empty_cell(int x, int y) +{ + int count = 0; + for (int i=-1; i<=1; i++) { + if (x+i < 0 || x+i > game_size.x) + continue; + for (int j=-1; j<=1; j++) { + if (y+j < 0 || y+j > game_size.y) + continue; + if (game[y+j][x+i] == '0' && discover[y+j][x+i]) + count++; + } + } + if (count > 0) + discover[y][x] = 1; +} + +void zero_click(int x, int y) +{ + if (x < 0 || x >= game_size.x || + y < 0 || y >= game_size.y) + return; + + if (zero[y][x]) + return; + + discover[y][x] = 1; + zero[y][x] = 1; + + if (game[y][x] != '0') + return; + + for (int i=-1; i<=1; i++) { + if (x+i < 0 || x+i >= game_size.x) + continue; + for (int j=-1; j<=1; j++) { + if (y+j < 0 || y+j >= game_size.y) + continue; + zero_click(x+i, y+j); + } + } +} + int main(void) { srand(time(NULL)); @@ -199,7 +239,12 @@ int main(void) ClearBackground(BLACK); if (IsKeyPressed(KEY_R)) { + game_state = PLAYING; + memset(game, 0, game_cap); + memset(discover, 0, game_cap); + memset(zero, 0, game_cap); fill_game(); + } if (IsKeyPressed(KEY_P)) { for (int x=0; x