From 9b1a8fcea9708fe9d7f1a987c8726c7b3e90b486 Mon Sep 17 00:00:00 2001 From: Jeroen Boxhoorn Date: Mon, 13 Oct 2025 19:58:43 +0200 Subject: [PATCH] wip --- .gitignore | 3 ++ CMakeLists.txt | 10 ++-- .../voorbeeld_doolhof.txt | 0 rooster.c | 50 ++++++++++++++++++ rooster.h | 38 ++++++++++++- spel | Bin 0 -> 100272 bytes spel.c | 42 +++++++++------ voorbeeld.c | 44 --------------- 8 files changed, 120 insertions(+), 67 deletions(-) rename voorbeeld_doolhof.txt => assets/voorbeeld_doolhof.txt (100%) create mode 100755 spel delete mode 100644 voorbeeld.c diff --git a/.gitignore b/.gitignore index 845cda6..a8c62f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# Clion files +.idea + # Prerequisites *.d diff --git a/CMakeLists.txt b/CMakeLists.txt index e21b91c..d5a3645 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ # Define a custom target to run the default 'make' command # ------------------------------------------------------------------ add_custom_target( - Week6 + MinigameMenu COMMAND ${MAKE_EXECUTABLE} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "Running make in the project directory..." @@ -15,7 +15,7 @@ add_custom_target( # Define a custom target to run 'make clean' # ------------------------------------------------------------------ add_custom_target( - Week6Clean + Clean COMMAND ${MAKE_EXECUTABLE} clean WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "Running make clean in the project directory..." @@ -26,9 +26,9 @@ add_custom_target( # Define a custom target to run 'make clean' # ------------------------------------------------------------------ add_custom_target( - Week6Tarball - COMMAND ${MAKE_EXECUTABLE} tarball1 + Tarball + COMMAND ${MAKE_EXECUTABLE} tarball2 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "Running make tarball in the project directory..." VERBATIM -) \ No newline at end of file +) diff --git a/voorbeeld_doolhof.txt b/assets/voorbeeld_doolhof.txt similarity index 100% rename from voorbeeld_doolhof.txt rename to assets/voorbeeld_doolhof.txt diff --git a/rooster.c b/rooster.c index d0c1b84..0b25756 100644 --- a/rooster.c +++ b/rooster.c @@ -15,6 +15,9 @@ typedef struct rooster_data { toestand state; } rooster; + +rooster *rooster_maak(char* input); + /* * Sets a grids width and height * @@ -201,6 +204,53 @@ int rooster_plaats(rooster *rp, int x, int y, char c) { return 0; } +char *rooster_als_string(const rooster *rp) { + if (rp != NULL && rp->rost != NULL) { + char *string = malloc(sizeof(rp->rost)); + if (string == NULL) { + return NULL; + } + memcpy(string, rp->rost, sizeof(rp->rost)); + return string; + } + return NULL; +} + +char *rooster_vraag_rij(const rooster *rp, int y) { + if (rp != NULL && rp->rost != NULL && rooster_bevat(rp, 0, y) == 1) { + // we're going to remove the newline so this is long enough + char *row = malloc((rp->width + 1) * sizeof(char)); + memcpy(row, &rp->rost[internal_location(rp, 0, y)], rp->width * sizeof(char)); + row[rp->width] = '\0'; + return row; + } + return NULL; +} + +rooster *rooster_kopieer(const rooster *rp) { + if (rp != NULL && rp->rost != NULL) { + const size_t grid_memory = ((rp->width + 1) * rp->height + 1) * sizeof(char); + + char *grid = malloc(grid_memory); + if (grid == NULL) { + return NULL; + } + + rooster *new_rooster = malloc(sizeof(*rp)); + if (new_rooster == NULL) { + return NULL; + } + + memcpy(grid, rp->rost, grid_memory); + + memcpy(new_rooster, rp, sizeof(*rp)); + + new_rooster->rost = grid; + return new_rooster; + } + return NULL; +} + void rooster_zoek(const rooster *rp, char c, int *x, int *y) { if (rp == NULL || rp->rost == NULL) { *x = -1; diff --git a/rooster.h b/rooster.h index 5ce54c9..7933fd1 100644 --- a/rooster.h +++ b/rooster.h @@ -53,10 +53,46 @@ rooster *rooster_lees(FILE *fh); * NULL teruggegeven. (In dat geval blijft geen gereserveerd geheugen * achter.) */ -rooster *rooster_maak(char* template); +rooster *rooster_maak(char* input); + +/* + * Haal een rij uit het rooster op. + * + * Input: + * rp: een pointer naar het rooster + * y: de y-coordinaat van de rij die je wilt hebben. + * + * Output: + * Een pointer naar een nieuwe string met daarin alle karakters in die rij. + */ +char *rooster_vraag_rij(const rooster *rp, int y); + +/* + * Maak een kopie van een rooster + * + * Input: + * rp: Een pointer naar het rooster. + * + * Output: + * Een pointer naar het kopie. + */ +rooster *rooster_kopieer(const rooster *rp); + +/* + * Haal het hele rooster op in de vorm van een string. + * + * Input: + * rp: Een pointer naar het rooster. + * + * Output: + * Een pointer naar een string met daarin het hele rooster, + * regels zijn gescheiden door '/n' karakters. + */ +char *rooster_als_string(const rooster *rp); /* Vraag de huidige toestand van het spel op. + Input: rp: een pointer naar het rooster. Uitvoer: de toestand. diff --git a/spel b/spel new file mode 100755 index 0000000000000000000000000000000000000000..b1fb5bc3ca0ba37bddd011caef187e9ccbd240f3 GIT binary patch literal 100272 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 literal 0 HcmV?d00001 diff --git a/spel.c b/spel.c index 24914d2..3b58c1f 100644 --- a/spel.c +++ b/spel.c @@ -30,6 +30,22 @@ #include "rooster.h" +typedef struct { + char name[100]; + rooster *game_map; +} game_maps; + +void toon_rooster_op_locatie(rooster *rp, int starting_x, int starting_y) { + int height = rooster_hoogte(rp); + + for (int y = 0; y < height; y++) { + char *rij = rooster_vraag_rij(rp, y); + mvprintw(starting_y + y, starting_x, "%s", rij); + free(rij); + } + refresh(); +} + /* Toont het gegeven rooster met ncurses. * * Input: @@ -41,18 +57,7 @@ void toon_rooster(rooster *rp) { clear(); - int height = rooster_hoogte(rp); - int width = rooster_breedte(rp); - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - if (rooster_bevat(rp, x, y) == 1) - { - mvaddch(y, x, rooster_kijk(rp, x, y)); - } - } - } - refresh(); + toon_rooster_op_locatie(rp, 0, 0); } void update_grid(rooster *rp, char c, int x, int y) { @@ -211,17 +216,20 @@ void graceful_exit() { } } +void toon_menu(rooster *rp) { + toon_rooster(rp); + rooster_zet_toestand(rp, AAN_HET_SPELEN); + run_maze(rp); + maze_exit_screen(rp); + graceful_exit(); +} /* * Speelt het spel met een gegeven rooster tot de toestand niet langer * AAN_HET_SPELEN is. */ void speel(rooster *rp) { - toon_rooster(rp); - rooster_zet_toestand(rp, AAN_HET_SPELEN); - run_maze(rp); - maze_exit_screen(rp); - graceful_exit(); + toon_menu(rp); } int main(int argc, char *argv[]) { diff --git a/voorbeeld.c b/voorbeeld.c deleted file mode 100644 index a1862dd..0000000 --- a/voorbeeld.c +++ /dev/null @@ -1,44 +0,0 @@ -/* Voorbeeldje van het gebruik van ncurses. - In dit voorbeeld kun je alleen met een + naar links en naar rechts wandelen - over een lijn van -. -*/ - -#include - -int RANGE = 20; - -/* Toont de situatie met ncurses. - - pos: de positie van de +. -*/ -void laat_zien(int pos) { - clear(); // begin met een nieuw ncurses scherm - for (int i = 0; i < RANGE; i++) { - addch(i == pos ? '+' : '-'); - } - refresh(); // zorg dat het scherm ook echt getoond wordt -} - -int main(void) { - // Initialiseer ncurses - initscr(); - cbreak(); // zodat je kunt onderbreken met Ctrl+C - keypad(stdscr, TRUE); // luister ook naar extra toetsen zoals pijltjes - noecho(); // druk niet de letters af die je intypt - - int pos = RANGE / 2; // begin in het midden van de lijn. - while (1) { - laat_zien(pos); - int toets = getch(); - switch (toets) { - case KEY_LEFT: - pos--; - break; - case KEY_RIGHT: - pos++; - break; - } - } - - return 0; -}