From f0e9d5c7513ab6e5232803b160285ef7a7157435 Mon Sep 17 00:00:00 2001 From: Jeroen Boxhoorn Date: Fri, 17 Oct 2025 14:29:22 +0200 Subject: [PATCH] MULTITHREADED FOR EPICNESSSSSS --- deel2.tar.gz | Bin 10418 -> 0 bytes grid_game_engine.c | 4 + grid_game_engine.h | 14 +++ maze_runner.c | 14 ++- minigame_menu.c | 5 +- snake.c | 206 +++++++++++++++++++++++++-------------------- spel | Bin 134624 -> 158616 bytes 7 files changed, 148 insertions(+), 95 deletions(-) delete mode 100644 deel2.tar.gz diff --git a/deel2.tar.gz b/deel2.tar.gz deleted file mode 100644 index 67bd8b7d78a18bc35ea0d34d0ef8c9515610d959..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10418 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 diff --git a/grid_game_engine.c b/grid_game_engine.c index 5a63a64..b807a66 100644 --- a/grid_game_engine.c +++ b/grid_game_engine.c @@ -12,6 +12,10 @@ #include "rooster.h" +int same_coordinate(coordinate a, coordinate b) { + return a.x == b.x && a.y == b.y; +} + int modulo(const int number, const int mod) { int result = number % mod; if (result < 0) { diff --git a/grid_game_engine.h b/grid_game_engine.h index 25fe2b9..2f07c96 100644 --- a/grid_game_engine.h +++ b/grid_game_engine.h @@ -16,6 +16,7 @@ typedef struct { int y; } coordinate; +// Start at 1 since the color 0 is reserved for no_color. typedef enum { BLACK = 1, WHITE = 2, @@ -32,6 +33,19 @@ typedef struct { rooster *game_map; } game_maps; +/* + * Checks if 2 coordinates are the same. + * + * Input: + * a: coordinate 1 + * b: coordinate 2 + * + * Returns: + * If they point to the same location: 1 + * Otherwise: 0 + */ +int same_coordinate(coordinate a, coordinate b); + /* * A proper modulo function. * The one provided by c: '%' doesn't work according to the mathematical definition. diff --git a/maze_runner.c b/maze_runner.c index 201d499..6c12962 100644 --- a/maze_runner.c +++ b/maze_runner.c @@ -21,7 +21,7 @@ static rooster *get_maze(void) { FILE *fh = fopen("assets/maze.txt", "r"); if (fh == NULL) { perror("loading maze"); - exit(EXIT_FAILURE); + return NULL; } rooster *rp = grid_from_file(fh); fclose(fh); @@ -29,7 +29,7 @@ static rooster *get_maze(void) { // 3. Bepaal of het lezen van het rooster is gelukt. if (rp == NULL) { fprintf(stderr, "Kan rooster niet maken.\n"); - exit(EXIT_FAILURE); + return NULL; } return rp; @@ -53,7 +53,8 @@ static void maze_runner_beweeg(rooster *rp, int dx, int dy) { if (playerx == -1 || playery == -1) { printf("Player not found!"); - exit(1); + rooster_zet_toestand(rp, STATE_BEGIN); + return; } if (rooster_bevat(rp, playerx + dx, playery + dy) == 1) { @@ -113,11 +114,16 @@ static void speel_maze(rooster *rp) { void maze_runner(void) { // Voorbereiding. rooster *rp = get_maze(); + if (rp == NULL) { + return; + } show_grid(rp); rooster_zet_toestand(rp, STATE_AAN_HET_SPELEN); // Game zelf. - speel_maze(rp); + while (rooster_vraag_toestand(rp) == STATE_AAN_HET_SPELEN) { + speel_maze(rp); + } // Exit game. game_exit_screen(rp); diff --git a/minigame_menu.c b/minigame_menu.c index c886127..405f8f8 100644 --- a/minigame_menu.c +++ b/minigame_menu.c @@ -26,7 +26,7 @@ static int OFFSET_X = 5; * menu: A pointer to the menu grid. * game: The game you want to launch. */ -static void launch_game(rooster *menu, const game game) { +static void launch_game(const game game) { switch (game) { case GAME_MAZE_RUNNER: maze_runner(); @@ -131,12 +131,13 @@ static int navigate_menu(rooster *menu) { menu_move(1); break; case KEY_ENTER: + case '\n': case 'f': case 'F': if (SELECTED_GAME == GAME_QUIT) { return 1; } - launch_game(menu, SELECTED_GAME); + launch_game(SELECTED_GAME); break; case KEY_BACKSPACE: return 1; diff --git a/snake.c b/snake.c index 02f1bc8..017ac3f 100644 --- a/snake.c +++ b/snake.c @@ -6,8 +6,9 @@ #include #include -#include #include +#include +#include #include "grid_game_engine.h" @@ -38,6 +39,8 @@ static coordinate SNAKE_TAIL; static coordinate MESSAGE_LOCATION = {0,0}; static int MAP_HEIGHT = 20; static int MAP_WIDTH = 20; +static rooster *GRID; +static pthread_mutex_t MUTEX; /* * Create a snake body part. @@ -75,11 +78,11 @@ static direction get_body_part_direction(const char body_part) { * Returns: * A pointer to the grid. */ -static rooster *create_grid(void) { +static void create_grid(void) { const int grid_size = (MAP_WIDTH + 1) * MAP_HEIGHT + 1; char *map = malloc(grid_size * sizeof(char)); if (map == NULL) { - return NULL; + return; } for (int i = 1; i <= (MAP_WIDTH + 1) * MAP_HEIGHT; i++) { @@ -105,17 +108,16 @@ static rooster *create_grid(void) { map[grid_size - 1] = '\0'; - rooster *grid = grid_from_string(map); + GRID = grid_from_string(map); free(map); - rooster_plaats(grid, rooster_breedte(grid) / 2, rooster_hoogte(grid) / 2, get_body_part(CURRENT_DIRECTION)); - return grid; + rooster_plaats(GRID, rooster_breedte(GRID) / 2, rooster_hoogte(GRID) / 2, get_body_part(CURRENT_DIRECTION)); } /* * */ -static void generate_food(rooster *gp) { +static void generate_food() { coordinate empty_spots[MAP_HEIGHT * MAP_WIDTH]; // Usable as index when initialized like this. @@ -123,7 +125,7 @@ static void generate_food(rooster *gp) { for (int x = 0; x < MAP_WIDTH; x++) { for (int y = 0; y < MAP_HEIGHT; y++) { - if (rooster_kijk(gp, x, y) == CELL_EMPTY) { + if (rooster_kijk(GRID, x, y) == CELL_EMPTY) { coordinate new_spot = {x, y}; empty_spots[available_spots] = new_spot; available_spots++; @@ -135,7 +137,7 @@ static void generate_food(rooster *gp) { const coordinate food_location = empty_spots[modulo(rand(), available_spots)]; - rooster_plaats(gp, food_location.x, food_location.y, CELL_FOOD); + rooster_plaats(GRID, food_location.x, food_location.y, CELL_FOOD); } /* @@ -147,30 +149,33 @@ static void generate_food(rooster *gp) { * Side Effects: * Seed random with the current time. */ -static rooster *initialize(void) { +static void initialize(void) { srand(time(NULL)); - rooster *grid = create_grid(); + create_grid(); - if (grid == NULL) { - return NULL; + if (GRID == NULL) { + return; } + CURRENT_DIRECTION = DIRECTION_DOWN; + PREVIOUS_DIRECTION = DIRECTION_DOWN; + // Set snake head and snake tail. - rooster_zoek(grid, get_body_part(CURRENT_DIRECTION), &SNAKE_HEAD.x, &SNAKE_HEAD.y); + rooster_zoek(GRID, get_body_part(CURRENT_DIRECTION), &SNAKE_HEAD.x, &SNAKE_HEAD.y); SNAKE_TAIL.x = SNAKE_HEAD.x; SNAKE_TAIL.y = SNAKE_HEAD.y; - generate_food(grid); + generate_food(); if (SNAKE_HEAD.x == -1) { - return NULL; + free(GRID); + GRID = NULL; + return; } - MESSAGE_LOCATION.y = rooster_hoogte(grid) + OFFSET_Y + 5; + MESSAGE_LOCATION.y = rooster_hoogte(GRID) + OFFSET_Y + 5; MESSAGE_LOCATION.x = OFFSET_X - 5 >= 0 ? OFFSET_X - 5 : 0; - - return grid; } /* @@ -196,16 +201,16 @@ static snake_action collision_check(char c) { return SNAKE_DIE; } -static void update_snake(rooster *gp, coordinate new_head, snake_action action) { +static void update_snake(coordinate new_head, snake_action action) { if (action == SNAKE_DIE) { - rooster_zet_toestand(gp, STATE_VERLOREN); + rooster_zet_toestand(GRID, STATE_VERLOREN); return; } if (action == SNAKE_MOVE) { coordinate new_tail = SNAKE_TAIL; - switch (get_body_part_direction(rooster_kijk(gp, SNAKE_TAIL.x, SNAKE_TAIL.y))) { + switch (get_body_part_direction(rooster_kijk(GRID, SNAKE_TAIL.x, SNAKE_TAIL.y))) { case DIRECTION_UP: new_tail.y--; break; @@ -220,105 +225,128 @@ static void update_snake(rooster *gp, coordinate new_head, snake_action action) break; } - rooster_plaats(gp, SNAKE_TAIL.x, SNAKE_TAIL.y, CELL_EMPTY); + rooster_plaats(GRID, SNAKE_TAIL.x, SNAKE_TAIL.y, CELL_EMPTY); SNAKE_TAIL = new_tail; } // New head placed after tail moves. It can occupy the empty space created by the tail moving. - rooster_plaats(gp, new_head.x, new_head.y, get_body_part(CURRENT_DIRECTION)); + rooster_plaats(GRID, new_head.x, new_head.y, get_body_part(CURRENT_DIRECTION)); SNAKE_HEAD = new_head; PREVIOUS_DIRECTION = CURRENT_DIRECTION; if (action == SNAKE_EAT) { - generate_food(gp); + generate_food(); } } -static void snake_move(rooster *gp) { - coordinate new_head = SNAKE_HEAD; - switch (CURRENT_DIRECTION) { - case DIRECTION_UP: - new_head.y--; - break; - case DIRECTION_RIGHT: - new_head.x++; - break; - case DIRECTION_DOWN: - new_head.y++; - break; - case DIRECTION_LEFT: - new_head.x--; - break; +static void *snake_move(void *arg) { + while (rooster_vraag_toestand(GRID) == STATE_AAN_HET_SPELEN) { + usleep(250000); + pthread_mutex_lock(&MUTEX); + coordinate new_head = SNAKE_HEAD; + switch (CURRENT_DIRECTION) { + case DIRECTION_UP: + new_head.y--; + break; + case DIRECTION_RIGHT: + new_head.x++; + break; + case DIRECTION_DOWN: + new_head.y++; + break; + case DIRECTION_LEFT: + new_head.x--; + break; + } + + snake_action action = collision_check(rooster_kijk(GRID, new_head.x, new_head.y)); + + update_snake(new_head, action); + show_grid_on_offset(GRID, OFFSET_X, OFFSET_Y); + pthread_mutex_unlock(&MUTEX); } - - snake_action action = collision_check(rooster_kijk(gp, new_head.x, new_head.y)); - - update_snake(gp, new_head, action); - show_grid_on_offset(gp, OFFSET_X, OFFSET_Y); + return NULL; } -static void turn_snake(rooster *gp, direction dir) { - if ((direction)modulo(dir + 2, DIRECTION_COUNT) == PREVIOUS_DIRECTION) { +static void turn_snake(direction dir) { + if ((direction)modulo(dir + 2, DIRECTION_COUNT) == PREVIOUS_DIRECTION + && !same_coordinate(SNAKE_HEAD, SNAKE_TAIL)) { return; } - rooster_plaats(gp, SNAKE_HEAD.x, SNAKE_HEAD.y, get_body_part(dir)); + rooster_plaats(GRID, SNAKE_HEAD.x, SNAKE_HEAD.y, get_body_part(dir)); CURRENT_DIRECTION = dir; - show_grid_on_offset(gp, OFFSET_X, OFFSET_Y); + show_grid_on_offset(GRID, OFFSET_X, OFFSET_Y); } -static void play_snake(rooster *gp) { - timeout(500); - - switch (getch()) { - case KEY_UP: // fallthrough - case 'w': - case 'W': - turn_snake(gp, DIRECTION_UP); - break; - case KEY_DOWN: // fallthrough - case 's': - case 'S': - turn_snake(gp, DIRECTION_DOWN); - break; - case KEY_LEFT: // fallthrough - case 'a': - case 'A': - turn_snake(gp, DIRECTION_LEFT); - break; - case KEY_RIGHT: // fallthrough - case 'd': - case 'D': - turn_snake(gp, DIRECTION_RIGHT); - break; - case KEY_BACKSPACE: - rooster_zet_toestand(gp, STATE_QUIT); - break; - case ERR: - snake_move(gp); +static void *play_snake(void *arg) { + while (rooster_vraag_toestand(GRID) == STATE_AAN_HET_SPELEN) { + timeout(1); + int c = getch(); + pthread_mutex_lock(&MUTEX); + switch (c) { + case KEY_UP: // fallthrough + case 'w': + case 'W': + turn_snake(DIRECTION_UP); + break; + case KEY_DOWN: // fallthrough + case 's': + case 'S': + turn_snake(DIRECTION_DOWN); + break; + case KEY_LEFT: // fallthrough + case 'a': + case 'A': + turn_snake(DIRECTION_LEFT); + break; + case KEY_RIGHT: // fallthrough + case 'd': + case 'D': + turn_snake(DIRECTION_RIGHT); + break; + case KEY_BACKSPACE: + rooster_zet_toestand(GRID, STATE_QUIT); + break; + } + pthread_mutex_unlock(&MUTEX); } + return NULL; } +//todo: ?? Win condition? void snake(void) { - rooster* const gp = initialize(); - if (gp == NULL) { + initialize(); + if (GRID == NULL) { return; } + + // Created necessary threads. + pthread_mutex_init(&MUTEX, NULL); + pthread_t user_input; + pthread_t game_tick; + + // Show game. erase(); + show_grid_on_offset(GRID, OFFSET_X, OFFSET_Y); + mvaddstr(MESSAGE_LOCATION.y, MESSAGE_LOCATION.x, "Press SPACEBAR to start playing."); - //todo: ?? Win condition? + rooster_zet_toestand(GRID, STATE_AAN_HET_SPELEN); - show_grid_on_offset(gp, OFFSET_X, OFFSET_Y); + // Allow turning before you let the snake move. + pthread_create(&user_input, NULL, play_snake, NULL); - mvprintw(MESSAGE_LOCATION.y, MESSAGE_LOCATION.x, "Press SPACEBAR to start playing."); while (getch() != ' ') {} - rooster_zet_toestand(gp, STATE_AAN_HET_SPELEN); - while (rooster_vraag_toestand(gp) == STATE_AAN_HET_SPELEN) { - play_snake(gp); - } + // Cleanup the start playing message. + mvaddstr(MESSAGE_LOCATION.y, MESSAGE_LOCATION.x, " "); - // game_exit_screen(gp); + pthread_create(&game_tick, NULL, snake_move, NULL); - rooster_klaar(gp); + // Cleanup game thread logic. + pthread_join(game_tick, NULL); + pthread_join(user_input, NULL); + pthread_mutex_destroy(&MUTEX); + + rooster_klaar(GRID); graceful_exit(); } diff --git a/spel b/spel index 0c0f4fedabe66dd38ce818e6524c1ae21a7cff74..f4d050ab7865f1eb7bbb6f8bcf6dea3f7a90680a 100755 GIT binary patch literal 158616 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 z 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 delta 40848 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