From 06253110ac23ef17ab57fd623eb36cfaed7c0f98 Mon Sep 17 00:00:00 2001 From: _N3m0 Date: Tue, 12 Mar 2024 10:45:48 +0100 Subject: [PATCH] game state --- main.c | 47 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index b5041f4..8ece116 100644 --- a/main.c +++ b/main.c @@ -14,6 +14,15 @@ static inline int max(int a, int b) { return a > b ? a : b; } +typedef enum GameState { + PLAYING, + WIN, + LOSE, +} GameState; + +GameState game_state = PLAYING; + +int game_cap = 16*30; char game[16][30] = {0}; char discover[16][30] = {0}; @@ -108,8 +117,9 @@ int count_bomb(int x, int y) void fill_game(GameType type) { - memset(game, 0, 16*30); - memset(discover, 0, 16*30); + game_state = PLAYING; + memset(game, 0, game_cap); + memset(discover, 0, game_cap); switch (type) { case BEGINNER: @@ -197,7 +207,20 @@ int main(void) } } - DrawRectangleRec(menu, RED); + Color menu_color; + switch (game_state) { + case LOSE: + menu_color = RED; + break; + case WIN: + menu_color = GREEN; + break; + case PLAYING: + menu_color = YELLOW; + break; + } + + DrawRectangleRec(menu, menu_color); DrawRectangleRec(grid, (Color) { .r = 255, .g = 240, .b = 172, .a = 255 }); @@ -246,8 +269,24 @@ int main(void) mouse_x = ((float) (mouse_x - grid_x) / grid_len) * game_size.x; mouse_y = ((float) (mouse_y - grid_y) / grid_len) * game_size.y; - if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) { + if (game_state == PLAYING && IsMouseButtonDown(MOUSE_BUTTON_LEFT)) { discover[mouse_y][mouse_x] = 1; + + int count_undiscovered_cell = 0; + for (int x=0; x