From 398b3160789ab1f871f92d69d05ad4e5ffb8c54a Mon Sep 17 00:00:00 2001 From: Alessandro Iezzi Date: Thu, 22 May 2025 15:06:17 +0200 Subject: Add a draft of restarting the game --- src/main/game/game.c | 22 +++++++++++++++++++++- src/main/game/game.h | 1 + 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/game/game.c b/src/main/game/game.c index b7beb41..9a5a245 100644 --- a/src/main/game/game.c +++ b/src/main/game/game.c @@ -58,6 +58,18 @@ init_log(void) static void game_draw_field(TrisGame *game, float box_size); static char game_next_sign(TrisGame *game); +static void +game_restart(TrisGame *game) +{ + game->ended = false; + + for (int i = 0; i < BOARD_SIZE; i++) { + Cell *cell = game->cells[i]; + cell->filled = false; + cell->sign = '\0'; + } +} + static void check_win(TrisGame *game) { @@ -74,12 +86,14 @@ check_win(TrisGame *game) && game->cells[i0]->sign == game->cells[i1]->sign && game->cells[i1]->sign == game->cells[i2]->sign) { engine_set_rendering_background_c(game->engine, game->board->wining_color); + game->ended = true; return; } } if (game->moves >= 9) { engine_set_rendering_background_c(game->engine, game->board->draft_color); + game->ended = true; } } @@ -122,7 +136,12 @@ loop_cells(TrisGame *game, float x, float y) static void game_mouse_button_pressed(float x, float y, void *data) { - loop_cells(data, x, y); + TrisGame *game = data; + if (!game->ended) { + loop_cells(game, x, y); + } else { + game_restart(game); + } } TrisGame * @@ -142,6 +161,7 @@ game_init(int width, int height) game->moves = 0; game->engine = engine_new(width, height); game->board = board_new(); + game->ended = false; ui_set_title("Tris Game"); engine_set_mouse_button_listener(game_mouse_button_pressed, game); diff --git a/src/main/game/game.h b/src/main/game/game.h index f30296c..a8bb157 100644 --- a/src/main/game/game.h +++ b/src/main/game/game.h @@ -33,6 +33,7 @@ typedef struct TrisGame { char sign; /* x = cross and o = circle */ int moves; Engine *engine; + bool ended; } TrisGame; TrisGame *game_init(int width, int height); -- cgit v1.2.3