aboutsummaryrefslogtreecommitdiff
path: root/posts/po4-voerbak.md
diff options
context:
space:
mode:
Diffstat (limited to 'posts/po4-voerbak.md')
-rw-r--r--posts/po4-voerbak.md81
1 files changed, 81 insertions, 0 deletions
diff --git a/posts/po4-voerbak.md b/posts/po4-voerbak.md
new file mode 100644
index 0000000..99759b1
--- /dev/null
+++ b/posts/po4-voerbak.md
@@ -0,0 +1,81 @@
+[meta]: <title> (po connect-4 voerbak readme)
+[meta]: <tags> (po4, po-connect-4, voerbak, c)
+[meta]: <date> (April 1 2021)
+[meta]: <author> (Loekaars)
+
+# Voerbak
+
+Here's the source for voerbak, this project's connect 4 engine. The name comes from an abbreviation for the Dutch word for connect 4: Vier Op Een Rij -> VOER + bak = voerbak
+
+Voerbak uses a 1-dimensional array for storing the playfield, and it's printed after every move. The ordering is left to right, then bottom to top:
+
+35|36|37|38|39|40|41
+-|-|-|-|-|-|-
+28|29|30|31|32|33|34
+21|22|23|24|25|26|27
+14|15|16|17|18|19|20
+7|8|9|10|11|12|13
+0|1|2|3|4|5|6
+
+Voerbak is used in this project using api/game/voerbak_connector.py
+
+## Building
+
+```sh
+make
+```
+
+## Input
+
+Voerbak takes moves seperated by newlines from stdin. An example game would look like this:
+
+``` sh
+echo "4,3,3,2,1,2,2,7,1,7,1,7,1" | sed "s/,/\n/g" | ./voerbak
+# ^ convert "," to newline
+```
+
+## Output
+
+Voerbak outputs special messages in this format:
+
+```
+e:full
+^ \__/
+| |
+| message (without spaces)
+|
+message type
+```
+
+Message reference:
+
+type|name|messages
+-|-|-
+d|draw|full = board is full
+e|errors|full = column is full
+m|move|true|false = if it's player 1's move
+w|win|int-int = board indices where 4 was connected
+
+## Command-line arguments
+
+```sh
+$ ./voerbak --help
+Usage: voerbak [OPTION...] arguments
+Connect 4 engine
+
+ -c, --solver=NAME Solver used for computing moves (unset is two
+ humans playing)
+ -h, --height=HEIGHT Field height (rows)
+ -v, --verbosity=LEVEL Verbosity, 0 = none (default), 1 = info, 2 =
+ debug
+ -w, --width=WIDTH Field width (columns)
+ -?, --help Give this help list
+ --usage Give a short usage message
+ -V, --version Print program version
+
+Mandatory or optional arguments to long options are also mandatory or optional
+for any corresponding short options.
+
+Report bugs to https://github.com/lonkaars/po-4-op-een-rij/.
+```
+