aboutsummaryrefslogtreecommitdiff
path: root/inc/hanoi.h
diff options
context:
space:
mode:
Diffstat (limited to 'inc/hanoi.h')
-rw-r--r--inc/hanoi.h30
1 files changed, 29 insertions, 1 deletions
diff --git a/inc/hanoi.h b/inc/hanoi.h
index 1953499..3091658 100644
--- a/inc/hanoi.h
+++ b/inc/hanoi.h
@@ -1,9 +1,15 @@
#ifndef HANOI_H
# define HANOI_H
+# include <unistd.h>
+# include <stdlib.h>
+# include <stdint.h>
+# include <stddef.h>
+# include <string.h>
+
# include <ncurses.h>
-# include "tower.h"
+# define MAX_HEIGHT 128
enum e_mode
{
@@ -11,4 +17,26 @@ enum e_mode
MODE_SELECT_TO,
};
+
+typedef struct
+{
+ uint8_t data[MAX_HEIGHT];
+ size_t len;
+} t_tower;
+
+enum e_highlight
+{
+ HIGHLIGHT_NONE = 0,
+ HIGHLIGHT_FROM = 1 << 0,
+ HIGHLIGHT_CURRENT = 1 << 1,
+};
+
+void towers_init(t_tower towers[3], size_t disk_num);
+void towers_move(t_tower towers[3], size_t from, size_t to);
+void tower_put(t_tower *tower, WINDOW *win, enum e_highlight highlight_level);
+uint8_t tower_peek(t_tower *tower);
+
+void solve(t_tower towers[3], WINDOW *wins[3],
+ int n, int from, int via, int to);
+
#endif