summary refs log tree commit diff
path: root/lib/constants.fnl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/constants.fnl')
-rw-r--r--lib/constants.fnl91
1 files changed, 91 insertions, 0 deletions
diff --git a/lib/constants.fnl b/lib/constants.fnl
new file mode 100644
index 0000000..c88b279
--- /dev/null
+++ b/lib/constants.fnl
@@ -0,0 +1,91 @@
+(local neighbors
+  [
+    [1 2 10]
+    [2 1 3 5]
+    [3 2 15]
+    [4 5 11]
+    [5 2 4 6 8]
+    [6 5 14]
+    [7 8 12]
+    [8 5 7 9]
+    [9 8 13]
+    [10 1 11 22]
+    [11 4 10 12 19]
+    [12 7 11 16]
+    [13 9 14 18]
+    [14 6 13 15 21]
+    [15 3 14 24]
+    [16 12 17]
+    [17 16 18 20]
+    [18 13 17]
+    [19 11 20]
+    [20 17 19 21 23]
+    [21 14 20]
+    [22 10 23]
+    [23 20 22 24]
+    [24 15 23]
+    ])
+
+(local mills
+  [
+   [1 2 3]
+   [4 5 6]
+   [7 8 9]
+   [10 11 12]
+   [13 14 15]
+   [16 17 18]
+   [19 20 21]
+   [22 23 24]
+   [1 10 22]
+   [4 11 19]
+   [7 12 16]
+   [2 5 8]
+   [17 20 23]
+   [9 13 18]
+   [6 14 21]
+   [3 15 24]
+   ])
+
+; these are the only moves that are valid
+; i am somewhat bothered by all the wasted space
+; by 2-3A and 5-6A e.g.
+; Incidentally these are all in order of appearance
+; so when you find a match,
+; you can also update that index of `moves` to the current player number
+(local spaces [
+  "1A" "4A" "7A"
+  "2B" "4B" "6B"
+  "3C" "4C" "5C"
+  "1D" "2D" "3D"
+  "5D" "6D" "7D"
+  "3E" "4E" "5E"
+  "2F" "4F" "6F"
+  "1G" "4G" "7G"
+  ])
+
+; This is what the game board looks like
+; it's also used to display the state of the game
+; the Xs are converted to "%d" later for string templating
+; they are Xs here so that it looks pretty =)
+(local board [
+  "  1 2 3 4 5 6 7"
+  "A x-----x-----x" ;; 1 2 3
+  "  |     |     |" ;;
+  "B | x---x---x |" ;; 4 5 6
+  "  | |   |   | |" ;;
+  "C | | x-x-x | |" ;; 7 8 9
+  "  | | |   | | |" ;;
+  "D x-x-x   x-x-x" ;; 10 11 12 13 14 15
+  "  | | |   | | |" ;;
+  "E | | x-x-x | |" ;; 16 17 18
+  "  | |   |   | |" ;;
+  "F | x---x---x |" ;; 19 20 21
+  "  |     |     |" ;;
+  "G x-----x-----x" ;; 22 23 24
+  ])
+
+{: board
+ : mills
+ : neighbors
+ : spaces}
+