diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/test-solve/main.c | 41 | ||||
| -rw-r--r-- | src/text/levels.c | 4 | 
2 files changed, 41 insertions, 4 deletions
| diff --git a/src/test-solve/main.c b/src/test-solve/main.c new file mode 100644 index 0000000..0e6efe0 --- /dev/null +++ b/src/test-solve/main.c @@ -0,0 +1,41 @@ +#include <stdbool.h> // bool +#include <string.h> // atoi() +#include <stdlib.h> // EXIT_{FAILURE,SUCCESS} +#include <stdio.h> +#include "../libsok/sok.h" +#include "../text/util.h" +#include "../text/levels.h" + +static void +solve_on_error( +  const char * const err +) { +  die("Error solving level: %s", err); +} + +int main(int argc, char *argv[]) { +  // init context +  sok_ctx_t ctx; +  sok_ctx_init(&ctx, NULL); + +  // walk levels +  for (int i = 1; i < argc; i++) { +    const size_t level_num = atoi(argv[i]); + +    // get level +    const level_t *level = levels_get_level(level_num); + +    // load level +    if (!sok_ctx_set_level(&ctx, level->data)) { +      die("Couldn't load level %zu", level_num); +    } + +    // solve level +    if (!sok_solve(&ctx, solve_on_error)) { +      die("Couldn't solve level"); +    } +  } + +  // return success +  return EXIT_SUCCESS; +} diff --git a/src/text/levels.c b/src/text/levels.c index dc031f8..4db92c8 100644 --- a/src/text/levels.c +++ b/src/text/levels.c @@ -634,10 +634,6 @@ LEVELS[] = {{    .pack = "Microban",    .name = "Level 155: The Dungeon",    .data = "4 6#15 4#|5#*#  17#  ##|#3 3#22 #|#8 8#  4#  ##  #|3# 4#5 #  4#  4#  ##|#*# # .# # # #5 #5 #3 #|#*# #  #5 # ##  # ##  ##  #|3#4 3# 3#  # ##  # ##  ##| #3 # #*#6 #5 # #4 #| #3 # 3#  5#  4# #4 #| 5#3 5#  7# 6#| #3 # # #**#15 #|## # #3 #**#  7#  ##  #|#4 9#  #4 5# 3#|# #13 # $8 #*#|#3 9#  3# @5#  #*#|5#7 4# 4#3 6#", -}, { -  .pack = "", -  .name = "", -  .data = "",  }};  #define NUM_LEVELS (sizeof(LEVELS) / sizeof(level_t)) | 
