diff options
author | 2025-05-22 15:06:17 +0200 | |
---|---|---|
committer | 2025-05-22 15:06:17 +0200 | |
commit | 398b3160789ab1f871f92d69d05ad4e5ffb8c54a (patch) | |
tree | 9bf7c9434a54542eca34cb9a2a9ad8d30692b3e2 | |
parent | 839b0ebe37c5e574e197e46eda19bbf3d3013a05 (diff) | |
download | tris-398b3160789ab1f871f92d69d05ad4e5ffb8c54a.tar.gz tris-398b3160789ab1f871f92d69d05ad4e5ffb8c54a.zip |
Add a draft of restarting the game
-rw-r--r-- | src/main/game/game.c | 22 | ||||
-rw-r--r-- | src/main/game/game.h | 1 |
2 files changed, 22 insertions, 1 deletions
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 @@ -59,6 +59,18 @@ 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) { /* The minimum number of moves to win the play */ @@ -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); |