#include "grid.h" #include "utils.h" #include #include Grid grid_create(unsigned int width, unsigned int height, char *fill) { unsigned int mem_height = height * sizeof(char **); unsigned int mem_width = width * sizeof(char *); Dimensions dimens = {.width = width, .height = height}; Grid grid = {.grid = malloc_s(mem_height), .dimens = dimens}; // Fill the grid for (unsigned int y = 0U; y < height; y++) { grid.grid[y] = malloc_s(mem_width); for (unsigned int x = 0U; x < width; x++) grid.grid[y][x] = fill; } return grid; } char *grid_get(Grid grid, Position pos) { return grid.grid[pos.y][pos.x]; } void grid_set(Grid grid, Position pos, char *value) { grid.grid[pos.y][pos.x] = value; } void grid_print(Grid grid) { for (unsigned int y = 0U; y < grid.dimens.height; y++) { for (unsigned int x = 0U; x < grid.dimens.width; x++) printf("%s", grid.grid[y][x]); printf("\n"); } } void grid_destroy(Grid grid) { // Deallocate the memory of the grid for (unsigned int y = 0U; y < grid.dimens.height; y++) free(grid.grid[y]); free(grid.grid); }