From 8c9ed0082624d17bc799b17a86a1a33f6a4ad2be Mon Sep 17 00:00:00 2001 From: Cameron Blankenbuehler Date: Fri, 24 Mar 2023 18:25:56 -0400 Subject: [PATCH] Initial C implementation commit with Board struct --- src/boggler/c/board.h | 41 +++++++++++++++++++++++++++++++++++++++++ src/boggler/c/boggler.c | 24 ++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 src/boggler/c/board.h create mode 100644 src/boggler/c/boggler.c diff --git a/src/boggler/c/board.h b/src/boggler/c/board.h new file mode 100644 index 0000000..29be65f --- /dev/null +++ b/src/boggler/c/board.h @@ -0,0 +1,41 @@ +#ifndef BOGGLER_UTILS +#define BOGGLER_UTILS + +#include +#include +#include +#include + +typedef struct Board { + uint8_t height; + unsigned short width; + char **cells; +} Board; + +char *get_cell_at(Board *board, uint8_t row, uint8_t col) { + return board->cells[row * col + col]; +} + +int print_board(Board board) { + char *row_delim = malloc((board.width * 4 + 1) * sizeof(char)); + row_delim[0] = '+'; + for (uint8_t i = 0; i < board.width; i++) { + strcat(row_delim, "----"); + } + row_delim[strlen(row_delim)-1] = '+'; + + for (uint8_t row = 0; row < board.height; row++) { + printf("%s\n", row_delim); + for (uint8_t col = 0; col < board.width; col++) { + printf("|%2s ", board.cells[(row * board.width) + col]); + } + puts("|"); + } + printf("%s\n", row_delim); + + free(row_delim); + + return 0; +} + +#endif diff --git a/src/boggler/c/boggler.c b/src/boggler/c/boggler.c new file mode 100644 index 0000000..30eaece --- /dev/null +++ b/src/boggler/c/boggler.c @@ -0,0 +1,24 @@ +#include +#include +#include +#include +#include "board.h" + +int main(int argc, char **argv) { + const uint8_t BOARD_SIZE = 4; + char *letters[] = { + "u", "n", "r", "e", + "qu","n", "i", "l", + "i", "s", "h", "a", + "s", "e", "l", "b" + }; + char **cell_letters = malloc(BOARD_SIZE * sizeof(char*)); + for (uint8_t i = 0; i < BOARD_SIZE * BOARD_SIZE; i++) { + cell_letters[i] = malloc(strlen(letters[i]) * sizeof(char)); + cell_letters[i] = letters[i]; + } + + Board board = { .height = 4, .width = 4, .cells = cell_letters }; + print_board(board); + free(cell_letters); +}