From e3690eb85a9456cc1f3ccda751ae7d9fdf2d3b03 Mon Sep 17 00:00:00 2001 From: Hampus Date: Tue, 4 Jan 2022 18:55:51 +0100 Subject: refactor: improve even more --- src/grid.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/grid.c (limited to 'src/grid.c') diff --git a/src/grid.c b/src/grid.c new file mode 100644 index 0000000..7248087 --- /dev/null +++ b/src/grid.c @@ -0,0 +1,55 @@ +#include "grid.h" +#include "utils.h" +#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 = 0; y < height; y++) + { + grid.grid[y] = malloc_s(mem_width); + + for (unsigned int x = 0; 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 = 0; y < grid.dimens.height; y++) + { + for (unsigned int x = 0; 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 = 0; y < grid.dimens.height; y++) + free(grid.grid[y]); + + free(grid.grid); +} + -- cgit v1.2.3-18-g5258