aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/test-solve/main.c41
-rw-r--r--src/text/levels.c4
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))